2015-09-14 106 views
0

我知道這個問題與其他帖子有關,但是他們都沒有解決我的問題。Grails唯一約束無法更新

我正在使用Grails 2.5.1,使用oracle數據庫。我有domain class CardMaster。它包含user_id, card_no and password

在約束條件中,我定義了card_nouniqueuser_id

然後我想用user_idPrimary Key,所以我按地圖id

id name:'user_id', generator: 'assigned' 

然而,當我發現和findByUser_id更新記錄。我有一個錯誤。它說card_no必須是唯一的,並且無法保存。

我讀other posts,他們說改變主鍵似乎沒有被映射爲id。如果我通過改變映射:

id column:'user_id', generator: 'assigned' 

它成功保存,但在表2列名爲user_id顯示,1節禮物user_id和其他的id

任何解決方案,將不勝感激。

謝謝。

更新

這裏是域類的完整代碼:

class CardUserMaster { 
    String card_no 
    String user_id 
    String password 
    static constraints = { 
    card_no(nullable: false, blank: false, maxSize: 19, unique: 'user_id') 
    user_id(nullable: false, blank: false, maxSize: 10, minSize: 6) 
    password(nullable: false, blank: false, maxSize: 32, minSize: 8) 
    static mapping = { 
     table('CARDUSER_MASTER') 
     id name: 'user_id' 
     version false 
     id generator: 'assigned' 
    } 
} 
+0

好吧,在同一個表中不可能有兩個同名的列。其他事情正在發生。如果您發佈域類的代碼,這將會有很長的路要走。 –

+0

你在這裏。伊曼紐爾羅莎。 –

回答

1

更新你的映射爲:

static mapping = { 
     table('CARDUSER_MASTER') 
     id column:"user_id", name: 'user_id', generator: 'assigned' 
     version false 
    } 

我們需要從分貝爲提供實際的列名主鍵所指的以及我們想要在一起的主鍵的自定義名稱。

+0

在同樣的情況下有同樣的問題,並添加列解決了我。 – rantunes