gpt4 book ai didi

java - 如何使用 Hibernate 5 中的 Integrator 服务添加带注释的类

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:48 25 4
gpt4 key购买 nike

这是引用JPA 2.0: Adding entity classes to PersistenceUnit *from different jar* automaticallyUnable to call Hibernate/QueryDSL from another maven subproject

Hibernate 4 似乎有一个很好的方法来使用动态加载实体类org.hibernate.integrator.spi.Integrator 服务。

现在,当使用 Hibernate 5 时,Integrator 接口(interface)的集成方法为我提供了

public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory,
SessionFactoryServiceRegistry serviceRegistry)
{

}

其中元数据的类型为 org.hibernate.boot.Metadata

我无法调用 addAnnotatedClass(),也无法获取 Hibernate 4 中的原始 Configuration 对象。

我该如何解决这个问题?

我正在使用maven和jetty。

我没有使用 spring(所以请不要提供任何基于 spring 的解决方案)

最佳答案

这实际上与我周末在 Hibernate 5 上遇到的问题有关。您可以在 latest Javadoc for Hibernate 4 中阅读与 Configuration 类相关的计划更改。 。获取所有加载的实体类(包括带注释的实体)信息的新位置是您提到的 Metadata 类。它有一个 getEntityBindings()方法将返回已知所有实体的 PersistentClass 实体元数据表示。然而这个Collection是不可变的。

建议您重新考虑使用Integrator 在运行时添加实体绑定(bind)。这在过去可能有效,但文档明确指出这不是故意的,因为这应该在初始化时完成。 MetadataSessionFactoryImplementor 一旦构建后大部分都是不可变的,因此 Integrator 的预期目的不是修改这些配置项,而是将它们用作有关如何使用 SessionFactoryServiceRegistry 配置新 Service 集成的信息。

如果您发现配置 Session 以在运行时查找所有带注释的类很烦人,我建议您尝试使用 EntityManagerFactory初始化 Hibernate 的方法,因为它更加简单,并且使用标准 JPA 语法,如果需要,可以切换到一些其他提供程序。这将代表您自动扫描带注释的实体。该 API 更加简化和有限,但如果您确实需要 native Hibernate 特定功能的强大功能,那么有一种方法 access the native underlying API .

关于java - 如何使用 Hibernate 5 中的 Integrator 服务添加带注释的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918808/

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