我不明白,发生了什么事!
突然间,简单的事情就停止了!
现在我想尝试定义类似http://docs.spring.io/spring-data/jpa/docs/1.10.6.RELEASE/reference/html/#jpa.java-config
的内容我收到以下编译错误
incompatible types: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean cannot be converted to javax.persistence.EntityManagerFactory
这是正确的,因为LocalContainerEntityManagerFactoryBean
没有实现EntityManagerFactory
方法所需的JpaTransactionManager#setEntityManagerFactory()
。
如何,该官方示例包含绝对不正确的代码段?怎么可能,这个片段在一段时间内为我编译了?
我打破了什么?
更新
我能够重写
txManager.setEntityManagerFactory(entityManagerFactory());
到
txManager.setEntityManagerFactory(entityManagerFactory().getObject());
所以这是文档中的错误吗?
答案 0 :(得分:4)
是的,文档错误
使用此代码将实体管理器工厂注入txManager
@Bean @Autowired public PlatformTransactionManager transactionManager(EntityManagerFactory factory) {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(factory);
return txManager;
}
答案 1 :(得分:1)
txManager.setEntityManagerFactory(entityManagerFactory());
并不认为你要么必须这样做
txManager.setEntityManagerFactory(entityManagerFactory().getObject());
或
txManager.setEntityManagerFactory(entityManagerFactory().getNativeEntityManagerFactory()
老实说,我不知道为什么以前有效。
我想这是一个错误,因为我按照官方文档中的描述尝试了这种方式并且它不起作用