84

JPAを使用して、異なる列セットに複数の一意の制約が必要であることを指定する方法はありますか?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    // Unique on username
    public String username;

    public String name;
    public String email;
}

休止状態固有の注釈を見ましたが、休止状態とデータ核のどちらかをまだ決定しているため、ベンダー固有のソリューションを回避しようとしています。

4

1 に答える 1

136

@Table属性uniqueConstraintsは、実際にはこれらの配列を受け入れます。あなたの例は、単一の要素を持つ配列の省略形です。それ以外の場合は、次のようになります。

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})

一意の制約が 1 つのフィールドのみに基づいている場合は常に、@Column(unique=true)その列で使用できます。

于 2010-08-04T11:15:50.863 に答える