通过DataSource bean手动配置数据库后到处都是LazyIntializeException

问题描述 投票:0回答:1

我将视图中打开会话的所有项目设置为 true,现在我需要添加一个新的数据库来项目,它导致手动配置我的旧数据源,如下所示(之前是在 application.properties 上配置的):

@DependsOn("assinanteContext")
@Configuration
@EnableJpaRepositories(
        basePackages = "org.crm", // Adjusted package for primary repositories
        entityManagerFactoryRef = "mainEntityManagerFactory",
        transactionManagerRef = "mainTransactionManager",
        excludeFilters = @ComponentScan.Filter(
                type = FilterType.ASSIGNABLE_TYPE, classes = {
                AssinanteRepository.class
        }
        )
)
public class DataSourceConfig {

    @Autowired
    private AssinanteContext assinanteContext;

    @Value("${app.assinante-cnpj}")
    private String cnpj;

    @Bean
    public DataSource dataSource() {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setJdbcUrl(assinanteContext.dbURL);
        hikariConfig.setUsername(assinanteContext.dbUser);
        hikariConfig.setPassword(assinanteContext.dbPass);

        hikariConfig.setConnectionTestQuery("SELECT 1");
        hikariConfig.setValidationTimeout(3000);
        hikariConfig.setIdleTimeout(60000);
        hikariConfig.setMaxLifetime(1800000);
        hikariConfig.setMinimumIdle(5);
        hikariConfig.setMaximumPoolSize(20);

        return new HikariDataSource(hikariConfig);
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean mainEntityManagerFactory() {
        LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
        factory.setDataSource(dataSource());
        factory.setPackagesToScan("org.crm"); // Main packages to scan
        factory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
        Properties properties = new Properties();
        properties.put("hibernate.physical_naming_strategy", "org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy");
        properties.put("hibernate.implicit_naming_strategy", "org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy");
        factory.setJpaProperties(properties);
        return factory;
    }

    @Bean
    public JpaTransactionManager mainTransactionManager(EntityManagerFactory mainEntityManagerFactory) {
        return new JpaTransactionManager(mainEntityManagerFactory);
    }
}

问题是我在整个应用程序上遇到了lazyInitializationException,

即使有警告

WARN 13764 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default.

我知道我可以使用

@Transactional
Hibernate.initialize
EAGER
但是在手动配置
Datasource
之前所有项目都运行良好,不值得重新配置100个相关实体的文件来解决这个问题,我真的认为OSIV被破坏了

堆栈跟踪

2024-10-22T08:39:12.714-03:00  INFO 9396 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9999 (http)
2024-10-22T08:39:12.746-03:00  INFO 9396 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-10-22T08:39:12.747-03:00  INFO 9396 --- [  restartedMain] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.10]
2024-10-22T08:39:13.082-03:00  INFO 9396 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-10-22T08:39:13.103-03:00  INFO 9396 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 6929 ms
2024-10-22T08:39:13.404-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2024-10-22T08:39:14.844-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@3d7bfecd
2024-10-22T08:39:14.847-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2024-10-22T08:39:14.993-03:00  INFO 9396 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2024-10-22T08:39:15.126-03:00  INFO 9396 --- [  restartedMain] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.2.5.Final
2024-10-22T08:39:15.130-03:00  INFO 9396 --- [  restartedMain] org.hibernate.cfg.Environment            : HHH000406: Using bytecode reflection optimizer
2024-10-22T08:39:15.932-03:00  INFO 9396 --- [  restartedMain] o.h.b.i.BytecodeProviderInitiator        : HHH000021: Bytecode provider name : bytebuddy
2024-10-22T08:39:16.470-03:00  INFO 9396 --- [  restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
2024-10-22T08:39:17.535-03:00  INFO 9396 --- [  restartedMain] o.h.b.i.BytecodeProviderInitiator        : HHH000021: Bytecode provider name : bytebuddy
2024-10-22T08:39:19.925-03:00  INFO 9396 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2024-10-22T08:39:19.929-03:00  INFO 9396 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-10-22T08:39:24.555-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Starting...
2024-10-22T08:39:25.149-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.pool.HikariPool        : HikariPool-2 - Added connection com.mysql.cj.jdbc.ConnectionImpl@40a952b4
2024-10-22T08:39:25.149-03:00  INFO 9396 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-2 - Start completed.
2024-10-22T08:39:25.166-03:00  INFO 9396 --- [  restartedMain] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2024-10-22T08:39:25.459-03:00  INFO 9396 --- [  restartedMain] o.h.b.i.BytecodeProviderInitiator        : HHH000021: Bytecode provider name : bytebuddy
2024-10-22T08:39:25.459-03:00  INFO 9396 --- [  restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
2024-10-22T08:39:25.951-03:00  INFO 9396 --- [  restartedMain] o.h.b.i.BytecodeProviderInitiator        : HHH000021: Bytecode provider name : bytebuddy
2024-10-22T08:39:27.015-03:00  INFO 9396 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2024-10-22T08:39:27.015-03:00  INFO 9396 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2024-10-22T08:39:27.409-03:00  INFO 9396 --- [  restartedMain] o.s.d.j.r.query.QueryEnhancerFactory     : Hibernate is in classpath; If applicable, HQL parser will be used.
Bulk cadastro ignorado
2024-10-22T08:39:36.345-03:00  INFO 9396 --- [  restartedMain] o.s.s.web.DefaultSecurityFilterChain     : Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@2ab894df, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@29bdd752, org.springframework.security.web.context.SecurityContextHolderFilter@7950e457, org.springframework.security.web.header.HeaderWriterFilter@372bbf0c, org.springframework.web.filter.CorsFilter@9cf28ff, org.springframework.security.web.authentication.logout.LogoutFilter@7bfad9fd, org.crm.infra.auth.SecurityFilter@3c0b8c94, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@4e57324b, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@6745f5e3, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@74142e4e, org.springframework.security.web.session.SessionManagementFilter@3d9a28ac, org.springframework.security.web.access.ExceptionTranslationFilter@3d975834, org.springframework.security.web.access.intercept.AuthorizationFilter@3306101a]
2024-10-22T08:39:37.181-03:00  INFO 9396 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9999 (http) with context path ''
2024-10-22T08:39:37.184-03:00  INFO 9396 --- [  restartedMain] o.s.m.s.b.SimpleBrokerMessageHandler     : Starting...
2024-10-22T08:39:37.190-03:00  INFO 9396 --- [  restartedMain] o.s.m.s.b.SimpleBrokerMessageHandler     : BrokerAvailabilityEvent[available=true, SimpleBrokerMessageHandler [org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry@4458818d]]
2024-10-22T08:39:37.191-03:00  INFO 9396 --- [  restartedMain] o.s.m.s.b.SimpleBrokerMessageHandler     : Started.
2024-10-22T08:39:37.212-03:00  INFO 9396 --- [  restartedMain] org.crm.CRMSpringBootApplication         : Started CRMSpringBootApplication in 32.268 seconds (process running for 34.81)
spring-boot
1个回答
0
投票

添加了有关

mainEntityManagerFactory()
的 bean 配置:

@Configuration
public class OsivConfig {
    @Bean
    public OpenSessionInViewFilter openSessionInViewFilter() {
        OpenSessionInViewFilter filter = new OpenSessionInViewFilter();
        filter.setSessionFactoryBeanName("mainEntityManagerFactory");
        return filter;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.