java – 在Hibernate中绕过GeneratedValue

有可能在hibernate中绕过@GeneratedValue的ID,我们有一种情况,大多数时候我们希望使用GeneratedValue设置ID,但在某些情况下,需要手动设置ID.

这可能吗?

解决方法

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

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

这确实有分歧.你刚刚使用了该ID,但是由GeneratedValue注释指定的序列不知道.除非你指定一个比当前序列值低的无符号ID,否则当序列达到刚才使用的值时,您将会遇到问题.

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

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...