2012-08-14 5 views
23

私はSEAM 2/HibernateとPostgreSQL 9データベースを使用しています。私はそれぞれの新しいエントリはactive_band_userとactive_band_dateのユニークな組み合わせを持って確実に制約を追加したいと思います次の表複数の列にわたる一意制約

Active Band 
=========== 
active_band_id serial 
active_band_user text 
active_band_date timestamp 
active_band_process integer 

を持っています。

1秒間に多数の挿入が試行される可能性がありますので、できるだけ効率的にするために必要です。エンティティマッピングで使用できるSEAM/hibernate注釈はありますか?事前

+0

これはhttp://stackoverflow.com/questions/3211972/specifying-restrictions-unique-together-inを複製するために表示されます。しかし、データベースの自動作成が使用されている場合、データベースにそのような制約を生成します注釈があります-hibernate –

答えて

52

おかげ挿入/更新前に一意性チェックなしのHibernateのアノテーションはありません。

@Table(
    name="ACTIVE_BAND", 
    uniqueConstraints= 
     @UniqueConstraint(columnNames={"active_band_user", "active_band_date"}) 
) 
+0

Eclipseで、アノテーション属性Table.uniqueConstraintsの値が@ javax.persistence.UniqueConstraintアノテーションである必要がありますが、これをサポートしているとは思いません。このメソッドはSQLスキーマに制約を生成しますか? – DaveB

+0

はい、サポートしています。次の文書に記載されています。http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html#uniqueConstraints%28%29他の何かが間違っている必要があります。 javax.persistence.UniqueConstraintはインポートされていますか? –

+12

これは数年前のことですが、 'org.hibernate.annotations.Table'ではなく' javax.persistence.Table'を使用していることを確認してください。 Hibernateの '@Table'には' uniqueConstraints'フィールドはありません。 – Patrick

関連する問題