gpt4 book ai didi

java - 使用 Hibernate 和 JPA 构建 EntityManagerFactory

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:19 24 4
gpt4 key购买 nike

我正在使用 SpringFramework 构建一个 Web 应用程序。在数据访问层,我使用 Hibernate 查询 MySQL 中的数据,运行良好。我的 SessionFactory 是通过此方法构建的:

public SessionFactory sessionFactory() throws HibernateException {
return new org.hibernate.cfg.Configuration()
.configure()
.buildSessionFactory();
}

今天我要将我的数据访问与JPA集成,这需要一个EntityManagerFactory,IMO我只需要将上面的代码更改为以下内容:

@Bean
public EntityManagerFactory entityManagerFactory() throws HibernateException {
return new org.hibernate.cfg.Configuration()
.configure()
.buildSessionFactory();
}

仅仅因为SessionFactory扩展了EntityManagerFactory。但是我有一个异常(exception)

java.lang.ClassCastException: org.hibernate.internal.SessionFactoryImpl cannot be cast to javax.persistence.EntityManagerFactory

这很奇怪,因为SessionFactoryImpl实现了SessionFactory,而SessionFactory扩展了EntityManagerFactory。我不知道为什么 Actor 失败。

我的问题是:1.为什么强制转换无效? 2. 使用 Hibernate 构建 EntityManagerFactory 的正确方法是什么?

编辑调试器说

factory instanceof SessionFactory         //true
factory instanceof EntityManagerFactory //false

以及SessionFactory的来源

public interface SessionFactory extends EntityManagerFactory, HibernateEntityManagerFactory, Referenceable, Serializable, Closeable

我确定以上所有 EntityManagerFactory 都引用了 javax.persistence.EntityManagerFactory

最佳答案

嗯,除非你使用 Hibernate 5.2,否则 Hibernate 的 org.hibernate.SessionFactory 不会扩展 javax.persistence.EntityManagerFactory,hibernate-entitymanager 最近才合并到 hibernate-core 中。在我看来,您正在浏览的源代码版本比您在项目中使用的版本更新。

无论哪种情况,要了解将 Hibernate 与 JPA 结合使用的正确方法,请参阅 this link

关于java - 使用 Hibernate 和 JPA 构建 EntityManagerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38354928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com