2012-08-14 541 views
23

我使用SEAM 2/Hibernate和PostgreSQL 9數據庫。我有以下表多列唯一約束

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

我想補充一點,確保每個新條目active_band_user和active_band_date的獨特組合的約束。

每秒可能會有很多試圖插入的東西,所以我需要儘可能高效,有沒有可以在實體映射中使用的SEAM/hibernate註釋?

在此先感謝

+0

這似乎複製http://stackoverflow.com/questions/3211972/specifying-restrictions-unique-together-in -hibernate – 2017-04-19 14:52:43

回答

52

沒有Hibernate註釋在插入/更新之前檢查唯一性。但有註釋如果使用自動創建數據庫,這將產生這樣的約束數據庫:

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

我不認爲它支持這個,因爲我在'Eclipse中註釋屬性Table.uniqueConstraints的值必須是一些@ javax.persistence.UniqueConstraint註釋'。此方法是否在SQL模式中生成約束? – DaveB 2012-08-14 17:24:28

+0

是的,它支持。它記錄在這裏:http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html#uniqueConstraints%28%29其他的東西一定是錯的。是否導入了javax.persistence.UniqueConstraint? – 2012-08-20 10:56:17

+12

我知道這是幾年前,但確保你使用'javax.persistence.Table'而不是'org.hibernate.annotations.Table'。 Hibernate的'@ Table'沒有'uniqueConstraints'字段。 – Patrick 2014-02-05 18:21:00