202

Java Bean があります。ここで、フィールドが一意であることを確認したいと思います。

次のコードを使用しています。

@UniqueConstraint(columnNames={"username"})
public String username;

しかし、私はいくつかのエラーが発生しています:

@UniqueConstraint is dissallowed for this location

一意の制約を使用する適切な方法は何ですか?

注:私はプレイ フレームワークを使用しています。

4

12 に答える 12

481

フィールド値が一意であることを確認するには、次のように記述します。

@Column(unique=true)
String username;

@UniqueConstraintアノテーションは、テーブルレベルで複数の一意キーにアノテーションを付けるためのものです。そのため、フィールドに適用するとエラーが発生します。

参考資料(JPA TopLink):

于 2010-06-27T08:16:34.250 に答える
134

次の構文でクラスレベルで使用できます

@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})})
public class SomeEntity {
    @Column(name = "username")
    public String username;
}
于 2013-07-24T05:12:34.253 に答える
48

私は現在、休止状態とJPA 2.0アノテーションを使用してプレイフレームワークも使用していますが、このモデルは問題なく動作します

@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"id_1" , "id_2"})})
public class class_name {

@Id
@GeneratedValue
public Long id;

@NotNull
public Long id_1;

@NotNull
public Long id_2;

}

それが役に立ったことを願っています。

于 2014-07-28T10:00:56.503 に答える
5
   @Entity @Table(name = "stock", catalog = "mkyongdb",
   uniqueConstraints = @UniqueConstraint(columnNames =
   "STOCK_NAME"),@UniqueConstraint(columnNames = "STOCK_CODE") }) public
   class Stock implements java.io.Serializable {

   }

一意の複合キーを作成するためにのみ使用される一意の制約。これは、テーブルを一意として結合された主キーとして表します。

于 2014-10-15T05:07:22.017 に答える
5

列の制約の定義

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

personNumberフィールドに一意の制約を定義しましょう。

@Column(unique=true)
private Long personNumber;

スキーマ作成プロセスを実行すると、ログから検証できます。

[main] DEBUG org.hibernate.SQL -
    alter table Person add constraint UK_d44q5lfa9xx370jv2k7tsgsqt unique (personNumber)

一意の制約の定義

JPA は @UniqueConstraint アノテーションを使用してそれを実現するのに役立ちます。uniqueConstraints 属性の下の @Table アノテーションでそれを行います。列の名前を指定することを忘れないでください。

@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "personNumber", "isActive" }) })

スキーマが生成されたら、それを検証できます。

[main] DEBUG org.hibernate.SQL -
    alter table Person add constraint UK5e0bv5arhh7jjhsls27bmqp4a unique (personNumber, isActive)
于 2021-06-26T08:31:11.650 に答える
4

テーブル内の結合された主キーに対して、クラスレベルで @UniqueConstraint を使用できます。例えば:

 @Entity
 @Table(name = "PRODUCT_ATTRIBUTE", uniqueConstraints = {
       @UniqueConstraint(columnNames = {"PRODUCT_ID"}) })

パブリック クラス ProductAttribute{}

于 2016-11-29T07:10:34.960 に答える