繁体   English   中英

Hibernate实体中的合成@NaturalId

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM