JPA 未知实体类型异常

JPA Unknown entity type Exception

@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:对象:com.entity.Person(id[null] 职业[null] 地址["Toronto"] 不是已知的实体类型。

我试图查找此异常,但解释对我来说含糊不清。我是 JPA 的新手

谁能帮帮我。

P.S。我有 getter 和 setter

提前致谢。

在 class 之前放置 @Entity 注释,并为所有字段生成 getter 和 setter...尝试查找任何 example/tutorial.

必须满足以下条件才能让 JPA 提供程序找到您的实体。

如果是 Web 应用程序(应用程序在应用程序服务器中运行),用 @Entity 注释标记实体就足够了,并确保在您的persistence.xml 以下是 NOT 集:<exclude-unlisted-classes>true</exclude-unlisted-classes>

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

如果您没有在persistence.xml中添加orm.xml映射文件或者没有使用@Entity。

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

然后在同一文件中添加以下标签或使用@Entity

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

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

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

这条语句会创建一个Student的匿名子类,而该子类没有@Entity注解,所以Hibernate无法识别。