【问题标题】:Bypass GeneratedValue in Hibernate在 Hibernate 中绕过 GeneratedValue
【发布时间】:2010-09-10 12:09:07
【问题描述】:

是否可以在 Hibernate 中绕过 @GeneratedValue 获取 ID,我们有一种情况,大多数时候我们希望使用 GeneratedValue 设置 ID,但在某些情况下希望手动设置 ID .

这样可以吗?

【问题讨论】:

    标签: java hibernate jboss


    【解决方案1】:

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

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

    不过,这确实会产生影响。您刚刚用完该 ID,但 GeneratedValue 注释指定的序列不知道这一点。除非您指定一个小于当前序列值的未指定 ID,否则一旦序列赶上您刚刚使用的值,您就会遇到问题。

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

    【讨论】:

    • 在我的例子中,不会有重复的,因为在这两种情况下,ID 都是从相同的序列生成的,只是在事务的不同点。
    • 我也不认为这是正确的。它当然不能在休眠状态下工作,我也怀疑这是否适用于大多数 JPA 提供程序。
    猜你喜欢
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    相关资源
    最近更新 更多