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

mis*_*ist 3 java mysql hibernate jpa auto-increment

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

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

我已经看到了一个带有额外桌子的解决方案,我觉得这不是很优雅.

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

我想使用@Generated,但我不能让它工作,人们声称它是可能的.

@Generated(GenerationTime.INSERT)
private long invoiceNumber;//invoice number
Run Code Online (Sandbox Code Playgroud)

更新:一个额外的要求,如果事务回滚,我们不能在编号上有差距.任何人?

Vla*_*cea 7

@GeneratedValue只适用于标识符,所以你不能使用它.如果使用MySQL,则由于不支持数据库序列,因此非常有限.

InnoDB 不支持多个AUTO_INCREMENT列,如果你的表PK是AUTO_INCREMENTED,那么你有两个选择:

  1. 去一个单独的表,其行为类似于序列生成器,您已经说过的解决方案并不高兴.

  2. 使用INSERT TRIGGER增加该列.