Wildfly 8.2无法扫描WEB-INF/lib/*.jar目录中的实体.这是预期的行为吗



我部署了一个包含WEB-INF/classes目录中实体的war,但现在我将这些实体移动到一个单独的项目/模块中,现在这些实体位于WEB-INF/lib/*.jar

更改后,wildfly未能扫描在部署时产生错误的实体。

然后我尝试添加

<class>class.inside.webinf.lib.Entity1</class>

标记以及正确部署的所有内容。

file.war/WEB-INF/classes/META-INF/persistence.xml 上的完整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成功扫描。。。

我想这个答案也回答了我的问题https://stackoverflow.com/a/6263592/39998

将实体放在库目录中(如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/* 内发生

有道理。(有点…)

通常情况下,这应该可以工作。我在大多数项目中都使用WEB-INF/lib/*.jar中的JPA实体类。

但是,当某些类与persistence.xml描述符不在同一个JAR中时,可能会出现问题。

很难说没有看到persistence.xml文件。您可以指定exclude-unlisted-classes,它将表示只查看列出的类。您必须使用jar-file来指示要扫描的JAR文件(从您的问题中不清楚您是否已经在扫描了。

相关内容

  • 没有找到相关文章

最新更新