0

私のSpring/hibernateプロジェクトuniqueConstraints = {@UniqueConstraint(columnNames={"ID_A", "ID_B"})}では、テーブル内の列の一意の組み合わせを検証するために使用しています. これは、列が 2 つしかない場合にうまく機能します。

ただし、制約に 3 番目の列を追加したい場合は、機能ID_Cしなくなります。

  1. @UniqueConstraint2列しか許可されていませんか?
  2. はいの場合、3 つ以上の列の一意の組み合わせを検証するにはどうすればよいですか?

助けてくれてありがとう、/D

編集:「機能しなくなった」とは、テーブルに新しいエントリを追加しても例外がスローされないことを意味します。2 つの列を使用すると、ConstraintViolationException.

4

1 に答える 1

2

エンティティにUniqueConstraintのみを追加しても、検証は実行されません。リンクされたドキュメントに記載されているように、データベーススキーマの生成に使用される手順が示されています。

プライマリテーブルまたはセカンダリテーブルに対して生成されたDDLに一意性制約を含めることを指定します。

これで、2つのオプションが残っています。

  1. Hibernateにデータベーススキーマを生成させます
  2. 通常どおりSQLを使用して、古い制約を削除し、新しい制約を追加します。
于 2012-07-20T14:55:55.037 に答える