JPA未知实体类型异常

时间:2015-10-03 21:03:37

标签: java jpa eclipselink

@Entity
@Table(name = "persons")    
public class Person implements Serializable {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "id")
        private Integer id;
        @Basic(optional = false)
        @Enumerated(EnumType.STRING)
        @Column(name = "occupation")
        private Occupation occupation;
        @Basic(optional = false)
        @Column(name = "address")
        private String address;
    }

我试图坚持这个对象并且我一直得到这个例外:

引起:java.lang.IllegalArgumentException:Object:com.entity.Person(id [null]占用[null]地址[" Toronto"]不是已知的实体类型。

我试图查看这个例外,但解释是让我理解模糊的方式。我是JPA的新手

任何人都可以帮助我。

P.S。我确实有吸气剂和二传手

提前致谢。

4 个答案:

答案 0 :(得分:1)

在课前放置@Entity注释,并为所有字段生成getter和setter ...尝试查找任何示例/教程。

答案 1 :(得分:1)

必须满足以下条件,以便JPA提供商找到您的实体。

对于Web应用程序(应用程序在应用程序服务器中运行),只需标记具有@Entity注释的实体,并确保在您的persistence.xml中是设置:<exclude-unlisted-classes>true</exclude-unlisted-classes>

对于标准Java SE应用程序,您必须在persistence.xml或引用的orm.xml中列出您的类。

答案 2 :(得分:0)

如果尚未在persistence.xml中添加orm.xml映射文件或未使用@Entity。

<mapping-file>META-INF/orm.xml</mapping-file>

然后将以下标记添加到同一文件或使用的@Entity

<exclude-unlisted-classes>false</exclude-unlisted-classes> 

答案 3 :(得分:0)

如果您要创建一个POJO,然后将其保存在存储库中,请确保您没有像这样创建POJO:

Student student = new Student() {{ setName(xxx);setAge(xxx); }};

此语句将创建一个Student的匿名子类,并且该子类没有@Entity注释,因此Hibernate无法识别。