2014-09-30 57 views
0

我有一个maven项目,一个独立的JPA工具。无法自动发现JPA2实体

该主项目依赖于另一个包含所有实体类的maven项目。

但是,JPA似乎没有自动查找我的实体。我的Eclipse项目>属性> jpa> auto discover,也被启用。

我的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="myapp-ds" transaction-type="RESOURCE_LOCAL">   
     <description>Vecchio</description> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/myapp" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="xxx" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> 
      <property name="hibernate.show_sql" value="true" />    
      <property name="hibernate.archive.autodetection" value="class"/> 
     </properties> 

    </persistence-unit> 

</persistence> 

它位于目标/班/ META-INF。

错误,使用实体的时候是:

Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: model.legacy.dto.myentity 
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1184) 
    at it.test.Main.main(Main.java:23) 

回答

1

: 否则,如果自动检测不工作,你可以手动persistence.xml插入实体。其他jar将不会包含在类似于战争的档案中,但将根据需要在类路径中搜索=>包含在由其他项目创建的jar中的实体类默认情况下不会被扫描。

您可以使用<jar-file>full jar location</jar-file>,但除非您设法将所有jar包装在同一个目录中,否则它将非常不可移植,但即使如此,它也只是安装的惯例。这就是许多文档(如Hibernate Entity Manager指南)建议在JSE环境中明确列出当前jar外的所有实体类的原因。

0

您尝试读取here。如果你使用一个独立的项目,仅包含在主罐子类将被持久化单元可以自动扫描

<persistence-unit ...> 
     <class>...</class> 
    </persistence> 
+1

我不想列出我所有的课程,他们是400+ – 2014-09-30 13:30:12