Hibernate@ManyToOne仅适用于CascadeType.ALL

我正在使用Hibernate3.3.1,我想在人员和指定公司之间建立关系。他们应该松耦合,但我想安排通过级联创建公司,而不是显式调用saveOrUpdate(newCompany)。

我定义了以下实体:

class Company

{

@Id

Long companyId;

String name;

}

class Person

{

@Id

Long personId;

String name;

@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})

Company company;

}

在我的小岛内,我正在执行以下操作:

testpers.setCompany (newCompany);

session.saveOrUpdate(testpers);

我得到一个例外

org.hibernate.TransientObjectException:对象引用了一个未保存的瞬态实例-

在刷新之前保存该瞬态实例:consearch.model.core.Company

当使用“ cascade = CascadeType.ALL”进行注释时,它可以工作,但是我也不想删除(例如,如果公司被删除,那么该人也不应被删除)

我想知道在事先感谢您之前没有人遇到过这个问题。尚恩

回答:

@Cascade使用非JPA Session.saveOrUpdate()方法时,可能需要启用Hibernate自定义。

添加@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)或使用Session.persist()

以上是 Hibernate@ManyToOne仅适用于CascadeType.ALL 的全部内容, 来源链接: utcz.com/qa/403543.html

回到顶部