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