gpt4 book ai didi

java - jpa:分离与 transient 定义

转载 作者:行者123 更新时间:2023-12-02 14:40:07 25 4
gpt4 key购买 nike

JPA中:
是 ID set 被视为分离的实体类实例,即使它刚刚创建?

或类似:

是一个实体类的实例,其ID未设置始终被视为 transient

我问这个问题是因为 jpa 方法在这两种情况下通常有不同的行为。

最佳答案

transient 分离状态之间的区别不是由实体本身决定的。给定一个实体实例,并不总是能够 100% 确定它是 transient 的还是分离的。区别只是逻辑上的 - 当实体实例先前附加到持久性上下文时,根据定义将其分离。这也意味着后台数据库中有相应的记录。

另一方面,对第二问题的回答是 - 没有ID的实体尚未被持久化(附加),因此它必定仍然是 transient 的。这是唯一可以确定状态的情况。由于分离实体对应于数据库中的记录,并且由于 id 对于 JPA 中的持久实体是强制性的,因此分离实体必须具有 id(在代码中分配或由 JPA 提供程序自动分配)。

以下是对实体生命周期状态和在状态之间进行转换的有效操作的全面解释:Entity lifecycle management

尽管实体仅在先前附加时才被视为分离,但可以创建一个之前未附加的假分离实体。但这主要是一种黑客行为,不受规范支持。对于大多数情况,设置正确的id就足够了。但是,如果您还使用 @Version 列进行乐观锁定,则还必须为此列设置正确的值。如果您使用 JPA 提供程序的其他非标准机制,您仍然可能会遇到一些麻烦。

关于java - jpa:分离与 transient 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33586184/

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