自动生成的id在em.remove()后跟em.merge或em.persist后按顺序创建间隙

时间:2014-02-11 05:08:22

标签: jpa entitymanager

我正在创建一个EJB应用程序,它作为酒店房间的CRUD功能。 我的房间数据库中有4行。

enter image description here

现在,如果我使用em.remove()方法删除第4行(具有房间ID 104),然后添加新行,则表格如下所示

enter image description here

在自动生成的序列ID中创建间隙。有没有办法在添加新行时避免这些差距?

1 个答案:

答案 0 :(得分:1)

默认情况下,JPA没有此功能,此问题与数据库管理序列的关系更为相关,据我所知,序列号不会重复使用。

持久化操作将创建一个新的id,当实体没有,如果你试图持久化一个分离的对象,你可能会发现一个EntityExistsException。

  

•如果Object是已删除的实体实例,则会出现IllegalArgumentException   合并操作抛出(或事务提交将   失败)。