Java Jboss/Wildfly:以编程方式向Hibernate添加类
我们希望不必在persistence.xml中指定所有jar文件或单个类,Java Jboss/Wildfly:以编程方式向Hibernate添加类,java,hibernate,jboss,Java,Hibernate,Jboss,我们希望不必在persistence.xml中指定所有jar文件或单个类,似乎不起作用,至少Hibernate不会选择任何不在上述jar文件或包含persistence.xml的存档中的类 因此,我们的想法是自己扫描实体,并为Hibernate提供所有检测到的类 基本方法是: 使用CDI扩展来获取所有用@Entity注释的类(这很有效) 使用Hibernate积分器注册类 然而,似乎有两个问题: 积分器在CDI扩展之前运行,因此顺序不合适 日志表明,Hibernate甚至在运行积分器之前就构
似乎不起作用,至少Hibernate不会选择任何不在上述jar文件或包含persistence.xml的存档中的类
因此,我们的想法是自己扫描实体,并为Hibernate提供所有检测到的类
基本方法是:
- 使用CDI扩展来获取所有用@Entity注释的类(这很有效)
- 使用Hibernate积分器注册类
基本上,问题是:在JBoss 7或Wildfly环境中,我们如何以编程方式将持久类添加到Hibernate配置中?如您所述,Hibernate可以在CDI启动之前初始化。有一个小的变通方法,可以消除指定每个bean的需要,但只指定jar。Persistence.xml有一个
jarName
标记,允许您指定应扫描持久性实体的jar
Pascal Thivent的详细回答
有时候,在我声明jar的路径之前,这对我来说是不起作用的,比如
lib/someJar.jar
正如您已经说过的,hibernate可能在CDI启动之前就已经初始化了。有一个小的变通方法,可以消除指定每个bean的需要,但只指定jar。Persistence.xml有一个jarName
标记,允许您指定应扫描持久性实体的jar
Pascal Thivent的详细回答
有时候,在我声明jar的路径之前,这对我来说是不起作用的,比如
lib/someJar.jar
是的,jar文件标签就是我们当前使用的。但正如我所说的,如果可能的话,我们想摆脱它Pascal还提到了hibernate.archive.autodetection
,但不幸的是,这不起作用,这可能是由于安装问题,即hibernate没有/无法扫描整个类路径。是的,jar文件标记是我们当前使用的。但正如我所说的,如果可能的话,我们想摆脱它Pascal还提到了hibernate.archive.autodetection
,但不幸的是,这不起作用,这可能是由于安装问题,即hibernate没有/无法扫描整个类路径。