我将视图中打开会话的所有项目设置为 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)
添加了有关
mainEntityManagerFactory()
的 bean 配置:
@Configuration
public class OsivConfig {
@Bean
public OpenSessionInViewFilter openSessionInViewFilter() {
OpenSessionInViewFilter filter = new OpenSessionInViewFilter();
filter.setSessionFactoryBeanName("mainEntityManagerFactory");
return filter;
}
}