1
resposta

Erro ao Executar o projeto spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering

Ao executar o projeto recebo esse erro: spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning.

faço a configuração spring.jpa.open-in-view=false no properties o sistema não roda.

1 resposta

Olá Julio,

Esse erro ocorre porque o Spring Boot habilita por padrão a opção "spring.jpa.open-in-view", que permite que as consultas ao banco de dados sejam executadas durante a renderização da visualização. No entanto, essa opção pode causar problemas de desempenho e, por isso, é recomendado desabilitá-la.

Você mencionou que tentou desabilitar a opção adicionando "spring.jpa.open-in-view=false" no arquivo "application.properties", mas o sistema não rodou. Você pode tentar adicionar essa configuração diretamente na classe de configuração do Spring. Por exemplo:

@Configuration
@EnableTransactionManagement
public class AppConfig {

    @Bean
    public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        transactionManager.setEntityManagerFactory(entityManagerFactory);
        return transactionManager;
    }

    @Bean
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
        return new PersistenceExceptionTranslationPostProcessor();
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());
        em.setPackagesToScan(new String[] { "com.example.demo" });

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());

        return em;
    }

    @Bean
    public DataSource dataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername( "root" );
        dataSource.setPassword( "root" );
        return dataSource;
    }

    Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.hbm2ddl.auto", "create-drop");
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties.setProperty("hibernate.show_sql", "true");
        properties.setProperty("hibernate.format_sql", "true");
        properties.setProperty("spring.jpa.open-in-view", "false"); // aqui desabilitamos a opção
        return properties;
    }
}

Nesse exemplo, a opção "spring.jpa.open-in-view" é desabilitada na configuração do Hibernate. Verifique se isso resolve o problema.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software