gpt4 book ai didi

hibernate @ManyToOne仅适用于CascadeType.ALL

转载 作者:行者123 更新时间:2023-12-04 04:05:45 25 4
gpt4 key购买 nike

我正在使用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;
}

在我的小岛内,我正在执行以下操作:
testpers.setCompany (newCompany);
session.saveOrUpdate(testpers);

我得到一个异常(exception)

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: consearch.model.core.Company



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

我想知道以前没有人遇到这个问题
在此先感谢您的帮助。
尚恩

最佳答案

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

关于 hibernate @ManyToOne仅适用于CascadeType.ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com