LocalContainerEntityManagerFactoryBean无法转换为EntityManagerFactory

时间:2017-01-12 15:54:09

标签: java spring hibernate spring-data-jpa

我不明白,发生了什么事!

突然间,简单的事情就停止了!

现在我想尝试定义类似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());

所以这是文档中的错误吗?

2 个答案:

答案 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()

老实说,我不知道为什么以前有效。

我想这是一个错误,因为我按照官方文档中的描述尝试了这种方式并且它不起作用