jersey 2.x JPA问题 - org.hibernate.UnknownEntityTypeException:无法找到persister

时间:2017-11-27 18:41:22

标签: hibernate jpa ejb-3.0 jersey-2.0 persistence.xml

我们正在应用程序中实施Jersey 2.26并面临EntityManager的问题。我们正在使用JPA,持久化类打包在一个单独的jar中。

从以下链接参考: - How do I properly configure an EntityManager in a jersey / hk2 application?

我们可以运行本地查询,如:

em.createNativeQuery("select employee_name from employee where employee_id = 2406")
  .getSingleResult();

但是

em.find(Employee.class,2406)

给出以下错误: -

  

org.hibernate.UnknownEntityTypeException:无法找到持久性:

的persistence.xml

<persistence-unit name="TestPersistence" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/TestPersistenceDS</jta-data-source>
    <properties>
        <property name="hibernate.cache.provider_class" 
                  value="org.hibernate.cache.NoCacheProvider" />
        <property name="hibernate.connection.driver_class" 
                  value="com.sybase.jdbc4.jdbc.SybDriver" />
        <property name="hibernate.dialect" 
                  value="org.hibernate.dialect.SybaseDialect" />

实体员工

@Entity
@Table(name = "employee")
public class Employee implements Serializable {

  private static final long serialVersionUID = 1L;

  @Id
  @Column(name = "emp_id")
  private Long empId;

  @Column(name = "emp_name")
  private String empName;

public Long getEmpId() {
    return empId;
}

public void setEmpId(Long empId) {
    this.empId = empId;
}

public String getEmpName() {
    return empName;
}

public void setEmpName(String empName) {
    this.empName = empName;
}

任何帮助都将不胜感激。

注意:不使用maven或spring。该应用程序部署在wildfdly 11

1 个答案:

答案 0 :(得分:0)

  

我们正在使用JPA,并且持久化类被打包在一个   单独的罐子。

我认为你需要告诉persistence.xml关于entites所在的jar,比如

...
<jta-data-source>java:jboss/datasources/TestPersistenceDS</jta-data-source>
<jar-file>../lib/a-separate.jar</jar-file>
...

注意:根据运行时环境,路径可能会有所不同,并且可能还需要增强jar中的实体。