持久化实体 with/without 分离的生成值 ID 时 EntityManager 的行为
Behavior of EntityManager when persisting Entities with/without GeneratedValue ids that are detached
我希望有人用 javax.persistence.EntityManager.persist() 的行为来回答以下不同情况:
(请,如果这些案例中的一些案例减少到一个相同的案例,也请这样说;如果我已经隐式减少到只有一个案例的一些案例(即:案例c)应该分开,因为不同行为,也请说出来)
我正在坚持的对象:
a) 已分离并且已经设置了 @GeneratedValue @Id 字段,并且在持久性上下文/数据库中存在具有相同 ID 的实体。
b) 已分离并且已经设置了 @GeneratedValue @Id 字段,但在持久性上下文/数据库中不存在具有相同 ID 的实体。
c) 已分离,但其@GeneratedValue @Id 字段尚未设置。
d) 是分离的,但它的主键不是自动生成的,而是已经设置的。
我已经找到了所有案例的答案:
a) 它将抛出 EntityExistsException。
b) 它将忽略设置的值,并在将实体刷新到数据库时设置自己生成的值。
c) 同 b.
d) 只有在 PersistenceContext 中没有对象具有相同主键的情况下才会持久化,否则会抛出 EntityExistsException,如 a.
我希望有人用 javax.persistence.EntityManager.persist() 的行为来回答以下不同情况:
(请,如果这些案例中的一些案例减少到一个相同的案例,也请这样说;如果我已经隐式减少到只有一个案例的一些案例(即:案例c)应该分开,因为不同行为,也请说出来)
我正在坚持的对象:
a) 已分离并且已经设置了 @GeneratedValue @Id 字段,并且在持久性上下文/数据库中存在具有相同 ID 的实体。
b) 已分离并且已经设置了 @GeneratedValue @Id 字段,但在持久性上下文/数据库中不存在具有相同 ID 的实体。
c) 已分离,但其@GeneratedValue @Id 字段尚未设置。
d) 是分离的,但它的主键不是自动生成的,而是已经设置的。
我已经找到了所有案例的答案:
a) 它将抛出 EntityExistsException。
b) 它将忽略设置的值,并在将实体刷新到数据库时设置自己生成的值。
c) 同 b.
d) 只有在 PersistenceContext 中没有对象具有相同主键的情况下才会持久化,否则会抛出 EntityExistsException,如 a.