我正在尝试使用Hibernate EntityManagerpersist方法将个人pojo插入mysql db,
entityManagerTransactionService.getEntityManager().persist(TemplateObject);
得到这个例外
javax.persistence.PersistenceException:
org.hibernate.PersistentObjectException: detached entity passed to
persist: com.esupu.base.model.pojo.common.TitleType at
org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1387)....
还有更多..
Caused by: org.hibernate.PersistentObjectException: detached entity
passed to persist: com.esupu.base.model.pojo.common.TitleType at
org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141)
at
org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:843)
我的Person.java类是,
@Entity
public class Person extends TemplateObject {
@OneToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST,CascadeType.REFRESH })
private TitleType titleType;
private String middle;
private String last;
@OneToOne(cascade = { CascadeType.ALL })
private Address address;
private Date birthdate;
private String email;
private String telephone;
private String fax;
@OneToOne(cascade = { CascadeType.ALL })
private Location location;
@OneToOne(cascade = { CascadeType.ALL })
private Country country;
然后是pojo的getter setter方法。
引发TitleType类的错误是“公共静态最终”标题类型定义提供程序,
@Entity
public class TitleType extends TemplateObject {
/**
*
*/
private static final long serialVersionUID = 3104954552111621034L;
private TitleType(int id, String name) {
setId(id);
setName(name);
}
public static final TitleType MR = new TitleType(1, "Mr");
public static final TitleType MISS = new TitleType(2, "Miss");
public static final TitleType MRS = new TitleType(3, "Mrs");
public static final TitleType MS = new TitleType(4, "Ms");
public static final TitleType DOCTOR = new TitleType(5, "Doctor");
public static final TitleType PROFESSOR = new TitleType(6, "Professor");
public static final TitleType SIR = new TitleType(7, "Sir");
public static final TitleType MADAM = new TitleType(8, "Madam");
}
我正在为人员设置标题类型类,
person.setTitleType(TitleType.MR);
不可能将公共静态最终类型定义的类传递给Hibernate?还是我做错了什么?
提前致谢
您尝试保留的对象TitleType
应该没有ID
值。否则,Hibernate将检查该对象在会话上下文中是持久的还是分离的。如果您不想像这样持久化对象的某些字段,则可以@Transient
在持久化实体时使用批注从字段映射中排除这些字段。这对于在DAO或实体中对ID进行硬编码是不好的,因为这些值可以由某些生成器生成,但是如果您使用此常数手动更新数据库,则可以至少将这些ID定义为代码中的常数,并通过ID从会话中加载对象在初始化临时或持久实例之前。
我正试图实现与hibernate的许多单向关系。问题是,当我试图向数据库中添加一些值时,我遇到了以下错误: 运行时发生异常。null:InvocationTargetException:未能执行ApplicationRunner:传递给persist:dnd35cg的分离实体。模型DND类;嵌套的异常是org。冬眠PersistentObjectException:传递给persist:dnd35
我用的是JPA。 在数据库中,有建筑表和房间表。它们有一个OneTo多连接。 我可以将数据添加到建筑中,但当我尝试将数据添加到房间中时,会出现错误: 我的建筑模型: 我的房间模型: 我的主应用。在这里,我获取建筑对象并将其传递到房间: 请帮忙。
这个网站上没有一个类似的问题能够解决我的问题。 错误:org.hibernate.persistentobjectexception:传递给persist:healthcheckapi.model.checks的分离实体 示例JSON健康对象: 请注意,这两个对象的ID都是自动生成的,我认为这是问题的一部分。
问题内容: 我正在创建一个简单的应用程序,只需使用将一行插入到表中(如果表不存在,则创建它)。 我为它的一个可运行示例附加了一些代码。 这是我得到的异常和stacktrace: 这是我的代码: 主班: 和Person类: 这是我的persistence.xml文件 -----------------------编辑-------------------------- – 我只是将提供程序更改为Ec
我有一个实体,它已经持久化,并希望将其添加到新生成的父实体(尚未持久化)。如果我尝试持久化父级,我会得到错误“分离的实体传递到持久化:model.child”。我想我必须以某种方式为孩子调用“EntityManager.merge()”,而不是“EntityManager.persisted()”。但是我没有显式调用persisted。这由“cascade=cascadetype.all”注释处理
我正在尝试使用Hibernate EntityManager持久化方法将person pojo插入mysql db, 得到这个异常, 还有更多.. My person.java类是, 然后使用pojo的getter setter方法。 是否不可能将公共静态final类型定义的类传递给Hibernate?还是我做错了什么? 提前致谢