在Hibernate中绕过GeneratedValue

时间:2020-03-06 14:19:43  来源:igfitidea点击:

在Hibernate中是否可以绕过@ GeneratedValue作为ID,在大多数情况下,我们希望使用GeneratedValue`来设置ID,但在某些情况下希望手动设置ID。

这可能吗?

解决方案

我知道我们可以在JPA规范中执行此操作,因此我们应该能够在Hibernate中(使用JPA +批注)。

如果仅填写要创建的新持久性模型的ID字段,那么当我们将该模型"合并"到EntityManager中时,它将使用我们设置的ID。

但是,这确实有后果。我们刚刚用完了该ID,但是GeneratedValue批注指定的顺序不知道这一点。除非我们指定一个比当前序列值少的未使用的ID,否则一旦序列赶上我们刚刚使用的值,我们将遇到问题。

因此,也许我可以看到我们可能希望用户在哪里指定ID,但是我们需要捕获将来可能出现的异常(重复ID)。