2010-08-17 47 views
12

我想確保我表中的所有行都具有兩個字段的唯一組合,並且我想在實體類中使用註釋來指定它。我試過使用@Table和@UniqueConstraint的組合,但顯然我做錯了,因爲我似乎只能指定單獨的列應該是唯一的(我可以指定使用@ Column的獨特屬性),而不是比列的組合。例如,我想要一個表中的字段A和B只包含具有A和B的唯一組合的行。字段/列都不必是唯一的,而是兩者的組合,它們應該是唯一的。如何指定列的組合應該是使用註釋的唯一約束?

這裏就是我沒有快樂到目前爲止已經試過:

@Table(name = "MY_TABLE", 
     uniqueConstraints = @UniqueConstraint(columnNames = 
              { "FIELD_A", "FIELD_B" })) 

@Table(name = "MY_TABLE", 
     uniqueConstraints = { @UniqueConstraint(columnNames = 
               { "FIELD_A", "FIELD_B" }) }) 

可有人請建議這樣做的正確方法?另外,如果可以使用JPA批註而不是特定於Hibernate的批註,那麼這將是更可取的。

在此先感謝您的幫助。

- 詹姆斯

+2

[JPA中唯一約束檢查​​]的可能重複(http://stackoverflow.com/questions/1839186/unique-constraint-check-in-jpa) – 2010-08-17 22:25:24

回答

14

你的第二次嘗試如預期

@Table(name = "MY_TABLE", 
    uniqueConstraints = { @UniqueConstraint(columnNames = 
              { "FIELD_A", "FIELD_B" }) }) 

應該工作。

+0

非常感謝您的幫助。事實證明,我的數據插入程序中有另一個錯誤,導致我相信這是問題所在。現在我發現了另外一個錯誤,這個獨特的限制確實可以像廣告一樣工作。我非常感謝你的協助! – 2010-08-17 19:46:37

+0

即使是第一種形式也應該有效。 – 2010-08-17 22:27:36