2008-09-18 68 views
11

是否有可能在Hibernate中绕过@GeneratedValue的ID,我们有一种情况是,大多数时候我们希望使用GeneratedValue来设置ID,但在某些情况下想要手动设置ID 。在休眠中跳过生成的值

这是可能的吗?

回答

5

我知道你可以在JPA规范中做到这一点,所以你应该可以在Hibernate(使用JPA +注解)。

如果您只是填写您要创建的新持久模型的ID字段,那么当您将该模型“合并”到EntityManager中时,它将使用您设置的ID。

这确实有分歧,但。您刚用完该ID,但由GeneratedValue注释指定的序列不知道。除非你指定的未使用的ID小于当前的序列值,否则一旦序列达到刚刚使用的值,就会出现问题。

所以,也许我能看到你可能希望用户能够指定一个ID,但随后你需要捕捉可能的异常(重复的ID),可能会在未来。

+0

在我的情况下,不会有重复,因为在这两种情况下,只会在交易中的不同位置产生相同的序列ID。 – 2008-09-18 03:25:34