Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复合@naturaid在Hibernate实体中_Java_Database_Hibernate_Triggers_Naturalid - Fatal编程技术网

Java 复合@naturaid在Hibernate实体中

Java 复合@naturaid在Hibernate实体中,java,database,hibernate,triggers,naturalid,Java,Database,Hibernate,Triggers,Naturalid,对于实体的生成id,应用程序使用触发器。因此,为了将生成的值分配给实体,我们使用如下构造: @Id @Column(name = "INVOICE_ID") @GeneratedValue(generator = "trigger") @GenericGenerator(name = "trigger", strategy = "org.hibernate.id.SelectGenerator") private Long invoiceId; @Column(name = "INVOICE_

对于实体的生成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
要求对某些字段使用
@naturaid
,该字段应具有(逻辑上)唯一的值。但是有些表没有包含所有唯一值的任何字段<代码>选择生成器不支持多个自然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
,它解决了我们的问题