【发布时间】:2020-12-14 09:33:02
【问题描述】:
我想在我的字符串 ID 之外有一个唯一的数字。 所以我想我可以使用 Generated from Hibernate 但该值始终为 null。
我的实体:
@Entity(name = "user")
public class UserEntity {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(updatable = false, nullable = false)
private String id;
....
@org.hibernate.annotations.Generated(GenerationTime.ALWAYS)
@Column(name = "identifier_id", insertable = false, updatable = false)
private Long identifierId;
}
有人可以帮帮我吗?
【问题讨论】:
-
也许this 的回答会有所帮助。
-
谢谢。但这意味着我需要用一个sql文件来创建这个表吗?不能通过JPA自动生成吗?
-
看起来是的。老实说,我不使用自动模式生成,正如documentation 中所建议的那样,这不像增量迁移脚本那样灵活:虽然自动模式生成对于测试和原型设计非常有用,但在生产中环境中,使用增量迁移脚本管理架构更加灵活。
-
是否有另一种方法可以为该实体生成独特的东西,而无需通过数据库进行操作?
-
在官方文档中您可以找到如何使用 java UUID 生成器docs.jboss.org/hibernate/orm/5.4/userguide/html_single/…。你可以为 Long 自己做同样的事情。这个baeldung.com/hibernate-identifiers#5-custom-generator 可以帮助你(只是不要去数据库并自己生成 Long randomply)。它会让你不用去数据库生成
标签: java spring-boot hibernate jpa