Java JPA:列在其父级中应该是唯一的。

Java JPA:列在其父级中应该是唯一的。,java,hibernate,jpa,unique,Java,Hibernate,Jpa,Unique,我有两张桌子: @Entity public class A implements Serializable { @Column @NotNull @Size(min = 1) @Pattern(regexp = "[A-Za-z]{1}[A-Za-z0-9_]*") private String token; @ManyToOne(optional = true) @JoinColumn(name = "b_id", referencedColumnName = "id")

我有两张桌子:

@Entity
public class A implements Serializable {

 @Column
 @NotNull
 @Size(min = 1)
 @Pattern(regexp = "[A-Za-z]{1}[A-Za-z0-9_]*")
 private String token;

 @ManyToOne(optional = true)
 @JoinColumn(name = "b_id", referencedColumnName = "id")
 private B b;

 ...
}

@Entity
public class B implements Serializable {

 @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "b")
 private List<A> a;

 ...
}
实体A中的令牌在实体B中应该是唯一的。 例如,B1中有一个令牌1,B2中也有一个令牌1,但可以 是B1内的第二个标记1

我将JPA与Hibernate一起使用

我如何做到这一点

通过在外键和令牌的组合上创建

在实体A上,类似于以下内容:

@Table(
    name="a", 
    uniqueConstraints={
        @UniqueConstraint(columnNames={"b_id", "token"})
    }
)
@Entity
public class A implements Serializable {
    // ...
}

工作!谢谢!