java – JPA或Hibernate生成(非主键)列值,而不是从1开始

我想要一个JPA / Hibernate(最好是JPA)注释,它可以生成一个列的值,它不是主键,也不是从1开始.

从我所看到的,JPA不能用@GeneratedValue和@SequenceGenerator以及@TableGenerator来做到这一点.或者其他任何东西.

我看到solution有一张额外的桌子,我发现它不优雅.

我可以使用Hibernate注释,因为我已经有了hibernate注释.

我想使用@Generated,但我无法使它工作,人们claim可能.

@Generated(GenerationTime.INSERT)
private long invoiceNumber;//invoice number

更新:一个额外的要求,如果事务被回滚,我们就不能在编号上留下空白.
任何人?

解决方法

@GeneratedValue仅适用于标识符,因此您无法使用它.如果使用MysqL,则由于不支持数据库序列,因此非常有限.

InnoDB doesn’t support multiple AUTO_INCREMENT columns如果您的表PK是AUTO_INCREMENTED,那么您有两个选择:

>选择一个单独的表,其行为类似于序列生成器,您已经说过的解决方案并不高兴.
>使用INSERT TRIGGER增加该列.

相关文章

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