繁体   English   中英

Jboss/Wildfly:以编程方式向 Hibernate 添加类

[英]Jboss/Wildfly: programmatically add classes to Hibernate

我们想摆脱必须在 persistence.xml 中指定所有 jar 文件或单个类,并且<property name="hibernate.archive.autodetection" value="class"/>似乎不起作用,至少Hibernate 不会选取任何不在上述 jar 文件或包含 persistence.xml 的存档中的类。

所以我们的想法是自己扫描实体并将所有检测到的类提供给 Hibernate。

基本方法是:

  • 使用 CDI 扩展来获取所有用 @Entity 注释的类(这有效)
  • 使用 Hibernate 集成器来注册类

但是,看起来有两个问题:

  1. 积分器在 CDI 扩展之前运行,因此订单不适合。
  2. 日志表明 Hibernate 甚至在运行集成器之前就构建了持久性单元,因此在集成器中添加类似乎为时已晚,即使我们可以解决或解决问题 1(例如,通过自己扫描类路径)。

基本上问题是:我们如何以编程方式将持久类添加到 JBoss 7 或 Wildfly 环境中的 Hibernate 配置中?

正如您已经说过的,hibernate 可能会在 CDI 之前初始化。 有一个小的变通方法可以消除指定每个 bean 的需要,但只需要指定 JAR。 Persistence.xml 有一个<jar-file>jarName</jar-file>标记,使您能够指定应该扫描持久性实体的 jar。

Pascal Thivent 的详细回答我需要persistence.xml 中的<class> 元素吗?

有时,这对我不起作用,直到我像<jar-file>lib/someJar.jar</jar-file>这样声明了<jar-file>lib/someJar.jar</jar-file>路径

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM