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无法识别。
@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无法识别。