2017-10-03 5 views
3

したがって、という2つの列を使用する一意制約を追加しようとしています。私は、Javaコード以下のいるデシベルでユニーク制約を追加し、私はどのように実装するか、このテーブルのソートを変更し、私はhibernate 2列一意のインデックスは値を更新できません

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
Duplicate entry '1-2' for key 'my_unique_constraint' 

を取得するレコードを更新

@Entity 
@Table(
    name = "test_table", 
    uniqueConstraints = @UniqueConstraint(
     columnNames = { 
      "other_table_id", 
      "sort_order" 
     }, 
     name = "my_unique_constraint") 
) 
class SomeTable { 

    private String label; 

    @ManyToOne(optional = false) 
    @JoinColumn(name = "other_table_id", nullable = false) 
    private OtherTable otherTable; 

    @NotNull 
    @Column(name = "sort_order", nullable = false) 
    private int sortOrder; 
} 

@UniqueConstraintようにIドンこの種のエラーが発生することはありません。

+0

を? –

+0

フルコードを意味しますか? –

+0

更新がどのように行われたのだろうか。実際に更新を行うか、実際に2番目のレコードを挿入しようとしていますか? –

答えて

1

uniqueConstraintsが分離されていないため、このエラーが発生します。

だから私のアプローチは、2つの制約分離することである:あなたの修正コードを供給することができます

@Table(
    name = "test_table", 
    uniqueConstraints = { 
      @UniqueConstraint(columnNames = "other_table_id"), 
      @UniqueConstraint(columnNames = "sort_order") 
    }, 
     name = "my_unique_constraint") 
) 
+0

私はこれが2つのユニークな制約を作成し、テーブル内で同じsort_orderを2回持つことはできないと考えています。私は、other_table_idに重複するsort_orderがないようなユニークな制約を作成したい。 –

関連する問題