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

时间:2014-10-30 09:45:30

标签: 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")
 private B b;

 ...
}

@Entity
public class B implements Serializable {

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

 ...
}

实体A中的Token应该是B 中的唯一
例如,B1中有 Token1 B2 中有 Token1 ,但可以有 是B1内的第二个 Token1

我正在使用JPA和Hibernate。

我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

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

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

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