gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:49:37 25 4
gpt4 key购买 nike

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

据我所知,JPA 无法使用@GeneratedValue 和@SequenceGenerator 以及@TableGenerator 做到这一点。或者与其他任何东西一起使用。

我看到一个solution有一张额外的 table ,我觉得这并不优雅。

我可以接受 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,那么你有两个选择:

  1. 寻找一个行为类似于序列生成器的单独表,您已经说过您不满意的解决方案。

  2. 使用INSERT TRIGGER增加该列。

关于java - JPA或Hibernate生成一个(非主键)列值,不是从1开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com