Hibernate @ManyToOne仅适用于CascadeType.ALL

Sha*_*non 9 hibernate cascading many-to-one

我正在使用Hibernate 3.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;
}
Run Code Online (Sandbox Code Playgroud)

在我的内心我正在做以下事情:

testpers.setCompany (newCompany);
session.saveOrUpdate(testpers);
Run Code Online (Sandbox Code Playgroud)

我得到一个例外

org.hibernate.TransientObjectException:object引用未保存的瞬态实例 - 在刷新之前保存瞬态实例:consearch.model.core.Company

当使用"cascade = CascadeType.ALL"进行注释时,它可以正常工作,但是我不想再进行ccade删除(例如,如果删除了公司,则不应删除此人)

我想知道没有人在提前帮助我之前有这个问题.巴蒂尔

Luc*_*cci 10

@Cascade在使用非JPA Session.saveOrUpdate()方法时,您可能需要启用Hibernate自定义.
添加@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)或使用Session.persist()