gpt4 book ai didi

hibernate - JPA 2.0 : Adding entity classes to PersistenceUnit *from different jar* automatically

转载 作者:行者123 更新时间:2023-12-02 19:32:58 25 4
gpt4 key购买 nike

我有一个 Maven 构建的基于 CDI 的 Java SE 应用程序,它有一个核心模块和其他模块。
Core 有 persistence.xml 和一些实体。模块有额外的实体。

如何将实体添加到持久性单元的聚光灯下?

我已阅读 Hibernate 手册,http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html/configuration.html#setup-configuration-packaging

我也看到了这些SO问题

我正在寻找一种解决方案,Hibernate 可以扫描所有加载的类,或者从其他 jar 中获取一些配置文件(例如 CDI 使用 beans.xml 所做的)。

我的应用程序不使用 Spring。我不坚持可移植性 - 我会坚持使用 Hibernate。

  • 有这样的解决方案吗?
  • 有没有办法从 persistence.xml 创建 PU 并以编程方式向其中添加类?
  • 在创建 EntityManagerFactory 后,我可以将 @Entity 类添加到它吗?
<小时/>

更新:我在org.​hibernate.​ejb.​Ejb3Configuration中找到:

public Ejb3Configuration configure(String persistenceUnitName, Map integration)  

http://docs.jboss.org/hibernate/entitymanager/3.6/javadocs/

最佳答案

有几种方法可以解决:

  1. Do I need <class> elements in persistence.xml? 中所述,您可以设置 hibernate.archive.autodetection 属性,Hibernate 应该能够从类路径中查找所有带注释的类。但是,这不符合 JPA 规范。

  2. 如果您使用 Spring,从 Spring 3.1.2(甚至可能更早)开始,在 LocalContainerEntityManagerFactoryBean 中,您可以定义 packageToScan ,它会询问LocalContainerEntityManagerFactoryBean 在类路径中扫描以查找所有带注释的类。同样,不符合 JPA 规范。

  3. 我使用 Maven 作为构建工具。几年前,我编写了一个小插件,它将在构建过程中生成 persistence.xml。该插件将从构建类路径扫描以找出所有带注释的类,并将它们列在生成的 persistence.xml 中。这是最乏味的,但结果符合 JPA 规范。一个缺点(我相信这不适用于大多数人)是查找发生在构建时,而不是运行时。这意味着,如果您的应用程序仅在部署/运行时而非构建时提供实体 JAR,则此方法将不起作用。

关于hibernate - JPA 2.0 : Adding entity classes to PersistenceUnit *from different jar* automatically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380728/

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