我正在部署包含WEB-INF/classes
目录中的实体的战争,但现在我将这些实体移动到单独的项目/模块中,现在实体驻留在WEB-INF/lib/*.jar
更改后,wildfly无法扫描部署时产生错误的实体。
然后我尝试添加
<class>class.inside.webinf.lib.Entity1</class>
persistence.xml
file.war/WEB-INF/classes/META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="pu" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/jboss/datasources/sgsdscore</jta-data-source>
<class>io.ingenia.sgsds.score.entity.Entity1</class>
<class>io.ingenia.sgsds.score.entity.EntityN</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.jdbc.batch_size" value="200"/>
<property name="hibernate.order_inserts" value="true" />
<property name="hibernate.order_updates" value="true" />
<property name="hibernate.cache.use_second_level_cache" value="true"/>
</properties>
</persistence-unit>
</persistence>
我错过了什么吗?
在WEB-INF/lib/*.jar
内的EJB成功扫描了......
答案 0 :(得分:2)
我想这个答案也回答了我的问题https://stackoverflow.com/a/6263592/39998
将目录放在lib目录中就像WEB-INF/lib/entities.jar
一样,但是persistence.xml文件必须在WEB-INF/lib/entities.jar/META-INF/persistence.xml
如果persistence.xml文件位于WEB-INF/classes/META-INF/persistence.xml
内,那么自动扫描只会在WEB-INF/classes/*
内发生
有道理。 (有点......)
答案 1 :(得分:1)
一般来说,这应该有效。我在大多数项目中都使用WEB-INF/lib/*.jar
的JPA实体类。
但是,如果某些类与persistence.xml
描述符不在同一个JAR中,则可能会出现问题。
答案 2 :(得分:1)
如果没有看到persistence.xml
文件,很难说。您可以指定exclude-unlisted-classes
,只会查看列出的类。您必须使用jar-file
来指示要扫描的JAR文件(如果您已经这样做,那么您的问题就不清楚了。