Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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 Hibernate中嵌入成员成员的唯一约束_Java_Hibernate_Jpa - Fatal编程技术网

Java Hibernate中嵌入成员成员的唯一约束

Java Hibernate中嵌入成员成员的唯一约束,java,hibernate,jpa,Java,Hibernate,Jpa,是否可以在Hibernate中定义嵌入类成员的唯一约束 我需要确保Nested::i1和Nested::i2作为一对(组合)是唯一的 可以通过使用: @Entity @Table(uniqueConstraints = { @UniqueConstraint(columnNames = {"i1", "i2"})}) public class Widget { 它将导致CREATESQL(postgresql示例) 可选-当您在一个文件中添加@AttributeOverride注释规范时(两个

是否可以在Hibernate中定义嵌入类成员的唯一约束

我需要确保Nested::i1和Nested::i2作为一对(组合)是唯一的


可以通过使用:

@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = {"i1", "i2"})})
public class Widget {
它将导致
CREATE
SQL(postgresql示例)

可选-当您在一个文件中添加
@AttributeOverride
注释规范时(两个属性的列名),可能会更为简洁易读

@AttributeOverrides({
        @AttributeOverride(name = "i1", column = @Column(name = "i1")),
        @AttributeOverride(name = "i2", column = @Column(name = "i2"))
})
@Embedded
Nested nested;

Thnaks,这太棒了。我非常担心的一件事是,如果
Nested
的字段名更改,任何将其用作嵌入式的类都会出现问题。。。有解决这个问题的模式吗?@JoshuaMN不幸的是,没有解决这个问题的模式,但是
嵌套的
类的字段更改名称的可能性很小,假设使用嵌入式类的目的是这样的。您也可以放弃
@AttributeOverride
的想法,因为在本例中,它并不意味着什么(我只是认为使用它时代码更为贴切)。
create table Widget 
(  id int8 not null,
   i1 int8, 
   i2 int8 ,
   primary key (id),
   unique (i1, i2)
) 
@AttributeOverrides({
        @AttributeOverride(name = "i1", column = @Column(name = "i1")),
        @AttributeOverride(name = "i2", column = @Column(name = "i2"))
})
@Embedded
Nested nested;