2015-02-10 43 views
0

我希望有人用javax.persistence.EntityManager.persist的行为()来回答下列不同情况:行为的EntityManager的坚持时有/无实体IDS GeneratedValue被分离

(请,如果其中一些案件减少到同一案件,也可以这样说;如果某些案件(即:案件c)由于不同的行为应该被分离为仅仅一个案件,那么也请这样说)

我坚持的对象:

a)已分离并已具有@GeneratedValue @Id字段已经设置,并且在持久化上下文/数据库中存在具有相同ID的实体。

b)分离并已经设置了@GeneratedValue @Id字段,但持久性上下文/数据库中不存在具有相同ID的实体。

c)被分离,但它的@GeneratedValue @Id字段尚未设置。

d)被分离,但其主键不是自动生成的,并且已被设置。

回答

0

我已经找到了答案对所有的案件:

一)它会抛出一个EntityExistsException。 b)它将忽略值集合,并且当实体刷新到数据库时它将设置它自己的生成值。

c)与b相同。

d)只有在PersistenceContext中没有对象具有相同主键的情况下,它才会持续存在,否则它将抛出EntityExistsException,如同在a中一样。

相关问题