[英]Composite @NaturalId in Hibernate entity
对于实体应用程序的世代ID,使用触发器。 因此,为了将生成的值分配给实体,我们使用如下构造:
@Id
@Column(name = "INVOICE_ID")
@GeneratedValue(generator = "trigger")
@GenericGenerator(name = "trigger", strategy = "org.hibernate.id.SelectGenerator")
private Long invoiceId;
@Column(name = "INVOICE_AMOUNT")
@NaturalId(mutable = true)
private Double invoiceAmount;
SelectorGenerator
要求对某些字段使用@NaturalId
,该字段应具有(逻辑上)唯一的值。 但是某些表没有任何人具有所有唯一值的字段。 SelectGenerator
不支持多个自然ID。 我们如何解决这种情况?
作为针对此类情况的可用解决方案,我们更改了获取实体ID的机制。 而不是使用
@GenericGenerator(name = "trigger", strategy ="org.hibernate.id.SelectGenerator")
我们更喜欢使用数据库序列生成器
@Id
@Column(name = "INVOICE_ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "invoice_id_seq")
@SequenceGenerator(name = "invoice_id_seq", sequenceName = "INVOICE_ID_SEQ")
private Long invoiceId;
它不需要@NaturalId
,它解决了我们的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.