我有2個班休眠刪除孤兒
家長
@Entity
@Table(name = "PARENT")
public class Parent {
@Id
@GeneratedValue
@Column(name = "ID")
private Long id;
@Column(name = "NAME")
private String name;
@Column(name = "WAGES")
private BigDecimal wages;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "PARENT_ID")
private List<Child> children;
// getters and setters
}
兒童
@Entity
@Table(name = "CHILD")
public class Child{
@Id
@GeneratedValue
@Column(name = "ID")
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "PARENT_ID", nullable = false, insertable = false, updatable = false)
private Long parentId;
// getters and setters
}
之間的父子關係。在這種特殊情況下,也有父無子記錄。當我更新父級時,即使父級不包含任何子級記錄,但hibernate仍會引發以下異常,並且不會嘗試更新/添加/刪除任何子級記錄。代碼中完全不訪問子集合。我正在使用所有JPA註釋。 Hibernate版本是3.6.7.Final。任何指針表示讚賞。
org.hibernate.HibernateException:與級聯集合=「全刪除,孤兒」由所擁有的實體實例不再被引用:com.mycode.Child
//服務代碼
public Parent update(ParentDto dto) {
Parent parent = parentDao.findById(dto.getId());
// Using Dozer to map dto object to entity object
// http://dozer.sourceforge.net/
dozerMapper.map(dto, parent);
taxFormW2Dao.saveOrUpdate(parent);
return Parent;
}
//道碼
public void saveOrUpdate(Parent parent){
// HibernateTempplate is injected through Spring
HibernateTemplate template = getHibernateTemplate();
getHibernateTemplate().saveOrUpdate(parent);
}
我們可以看到更新的代碼嗎? – 2012-01-10 16:59:54
感謝您的時間。我添加了更新的代碼。 – user531248 2012-01-10 18:37:56