当前位置: 首页 > 知识库问答 >
问题:

如何在多对一保存或更新操作中使用合并和持久化级联类型?

太叔小云
2023-03-14

我在我的一个实体中有一个如下所示的映射。在尝试保存该实体时,如果已经设置了scrMSgLine id并且级联类型是PERSIST,那么我得到了“org.hibernate.persistentObjectException:detached entity pass to PERSIST:scrMSgLine”异常。如果我将级联类型更改为合并,则记录保存成功。

如果scrMSgLine id为null,级联类型为MERGE,那么我得到了“对象引用了一个未保存的瞬态实例-在刷新之前保存瞬态实例”异常。

那么我应该使用哪种级联类型,我做错了什么?

@ManyToOne(cascade = {CascadeType.PERSIST})
@JoinColumn(name = "MSG_LINE_ID")
@Where(clause = "DELETED_AT IS NULL")
public ScrMsgLine getScrMsgLine() {
    return scrMsgLine;
}

共有1个答案

乐钱青
2023-03-14

原来是交易问题而不是级联类型。我在保存scrMsgLine对象后创建了一个新的tnx。所以当我把它传给新的TNX时,它变得很分离。作为一个周围的工作,我在新的TNX开始时从db读到了它。并且我将cascade类型更改为Persisted。我不确定这是不是正确的解决办法,但目前它对我有效。

 类似资料:
  • 问题内容: 我最近开始玩Play!Java框架1.2.3版(最新)。在测试框架时,尝试在名为的Hibernate实体中保留对象时遇到了一个奇怪的问题。地图对象映射长到Hibernate的实体,我呼吁,随着申报 我的问题如下:按照我的注释创建正确的表。但是,当对象持久化时,其中的数据就不会! 这是我用于实体的代码。首先是: 这里是: 这是我用来测试设置的课程: 表演!框架会自动为HTTP请求创建一个

  • 问题内容: 我最近开始玩Play!Java框架1.2.3版(最新)。在测试框架时,尝试在名为的Hibernate实体中保留对象时遇到了一个奇怪的问题。地图对象映射长到Hibernate的实体,我呼吁,随着申报 我的问题如下:按照我的注释创建正确的表。但是,当对象持久化时,其中的数据就不会! 这是我用于实体的代码。首先是: 这里是: 这是我用来测试设置的课程: 表演!框架会自动为HTTP请求创建一个

  • Hy全部 我很难解决次年Spring的jpa问题。假设我有以下简单的数据模型(两个实体之间有单向关系) 和下面的管道来存储它们 下面的测试 最后一次测试(即insertEntity2WithExistingEntity1)失败,出现以下异常 组织。冬眠PersistentObjectException:传递给persist:com的分离实体。实例杰帕德莫。实体1 如果我将Entity2中的Casc

  • 我有以下问题。我有3个实体,我使用的是一个单向实体: 一个小测试: 因此,看看上面的测试,如果我使用,在事务提交之后,确实会在持久性上下文中获得Entity1的两个实体,如果我将其更改为,则会在持久性上下文中获得Entity1的一个实体。有谁能解释一下为什么会发生这种情况或者指出一些文档吗?

  • 主要内容:JPA级联持久化示例,输出结果级联持久化用于指定如果实体持久化,则其所有关联的子实体也将被持久化。 以下语法用于执行级联持久性操作 - JPA级联持久化示例 在这个例子中,我们将创建两个相互关联的实体类,但要建立它们之间的依赖关系,我们将执行级联操作。 这个例子包含以下步骤 - 第1步: 在包下创建一个名为的实体类,其中包含属性:,,以及标记为级联规范的类型的对象。 文件: StudentEntity.java - 第2步:

  • 问题内容: 我有两个如下的类设置。当我需要注释什么东西作为外国收藏时,我什么时候不需要,我感到困惑。这听起来也很愚蠢,但是文档中没有任何地方说明是否允许非外部集合。如果我有一个自动装箱到的清单,该怎么办?我可以使用上面的标准来坚持吗?根据,外国馆藏还必须具有向后引用才能正常工作(给父母的引用,具有一对多的关系)。对于下面的示例,我假设您应该将注解作为外部集合并进行异化,但是您将如何处理呢? 我在这