如果没有persistence.xml中的<class>元素,则无法识别实体类

时间:2018-02-23 21:06:57

标签: java hibernate java-ee jboss

我有一个项目,但我无法配置它以使用JPA和hibernate。

我有一个带有@Entity注释的类,当我尝试持久化它的实例时,我收到此错误:

java.lang.IllegalArgumentException: Unknown entity: com.package.to.MyEntityClass
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1149)
    ... (stack trace of my code trying to persist an instance built from a request to a servlet)

显然Hibernate无法看到MyEntityClass应该是一个实体。

但是,如果我将<class>个元素添加到我的persistence.xml文件中,则可以找到该实体,并且我得到的错误是其@OneToOne注释引用了一个未知实体,我就是这样。我假设我还需要添加到persistence.xml文件。

Aren的@Entity注释类应该自动发现吗?我查看了this question,我尝试在<jar-file>标记中引用我的.war文件,但它没有用。 (我得到一个未找到文件的例外)

知道如何解决这个问题吗?我使用JBoss EAP 7进行部署,这是我的persistence.xml

<persistence 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"
  version="2.1">

  <persistence-unit name="unit1" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>java:/OracleDS</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.show_sql" value="true" />
      <property name="hibernate.format_sql" value="true" />
      <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
      <property name="hibernate.hbm2ddl.auto" value="validate" />

      <!-- Configuring Connection Pool -->
      <property name="hibernate.c3p0.min_size" value="5" />
      <property name="hibernate.c3p0.max_size" value="10" />
      <property name="hibernate.c3p0.timeout" value="500" />
      <property name="hibernate.c3p0.max_statements" value="30" />
      <property name="hibernate.c3p0.idle_test_period" value="2000" />
    </properties>
  </persistence-unit>
</persistence>

0 个答案:

没有答案