gpt4 book ai didi

JPA CascadeType 优先级?

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

使用 JPA 我有一个关于 CascadeTypes 的问题。

例如:

@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH})

与此不同:
@ManyToMany(fetch=FetchType.LAZY, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})

为什么?
我需要级联类型持久化自动在我的文件中插入引用的对象
实体类。我需要合并,因为我不想在我的
表。但是当我首先定义持久性时,合并不起作用,当我定义时
先合并,坚持不起作用。

为什么?

最佳答案

JPA 规范实际上是一个非常易读的文档,可以在这里下载:

https://jcp.org/aboutJava/communityprocess/final/jsr317/index.html

在第 384 页的里面,它涵盖了 cascade ManyToMany 的属性注解:

The cascade element specifies the set of cascadable operations that are propagated to the associated entity. The operations that are cascadable are defined by the CascadeType enum: public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH, DETACH}; The value cascade=ALL is equivalent to cascade={PERSIST, MERGE, REMOVE, REFRESH, DETACH}.



如您所见,它没有说明订单。可能发生的情况是您的应用程序有时使用需要持久化的新对象,有时从数据库中加载一个然后需要合并的对象。换句话说,它是一个应用程序问题。

我个人使用 DIY 方法来合并持久性上下文中的实体。一篇关于这个主题的好文章在这里:

http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/

关于JPA CascadeType 优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16466700/

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