溢出者
我正在尝试使用 Spring Data JPA(2.1.4,看似最新)获取 ObjectDB(2.7.6_01,最新)。
Spring Data JPA 的文档说需要 2.1 版 JPA 提供程序。AFAIKT ObjectDB 的 JPA 提供程序是 2.0 ...不确定这是否是问题所在。
但我的问题是这个例外:
Caused by: java.lang.IllegalArgumentException: com.objectdb.jpa.EMF is not an interface
这导致:
EntityManagerFactory interface [class com.objectdb.jpa.EMF] seems to conflict with Spring's EntityManagerFactoryInfo mixin - consider resetting the 'entityManagerFactoryInterface' property to plain [javax.persistence.EntityManagerFactory]
我很高兴我的代码正确地选择了 ObjectDB 实体管理器工厂,但是 Spring 围绕此类 (EMF) 的 CGLIB 包装器无法正常工作。
有人有什么想法吗?
摇篮依赖:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compile files('libs/objectdb-jee.jar')
compileOnly 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
然后,这两个 @Bean 中的任何一个(一个或另一个,而不是两者)都会导致上述相同的 EMF 异常:
@Bean
public JpaVendorAdapter jpaVendorAdapter() {
final ObjectdbJpaVendorAdapter vendorAdapter = new ObjectdbJpaVendorAdapter();
return vendorAdapter;
}
或者
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final ObjectdbJpaVendorAdapter vendorAdapter = new ObjectdbJpaVendorAdapter();
vendorAdapter.setShowSql(true);
vendorAdapter.setGenerateDdl(false);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.example.demo.persistence");
factory.setDataSource(dataSource());
factory.afterPropertiesSet();
return factory;
}
我有一个无操作的 DataSource @Bean 来保持 Spring 的某些方面快乐,但我认为它在这个问题中没有发挥积极作用。
根本没有设置 spring.jpa.*。
干杯