2013-04-16 80 views
0

檢索域實例我使用域類生成的身份:由生成的ID

class User { 
    ... 
    static mapping = { 
     id generator: 'assigned', name: 'uid' 
    } 

    Long uid 
    ... 
} 

但是當我嘗試使用

User.get(1) 

獲得實例返回null。如果我使用,它確實有效

User.findByUid(uid) 

當生成ids時,是不是可以使用Domain.get或Domain.read?

回答

1

即使您的ID已分配,也無需聲明該屬性。

class User { 
    static mapping = { 
    id generator: 'assigned' column: 'uid' 
    } 
} 

這裏的關鍵是映射列名在數據庫中。

+0

這使得它的工作。謝謝 我不得不在構造函數中使用「id bindable:true」來標識id。 – chozero

+0

確實,默認情況下,數據綁定中排除了id,這就是爲什麼您需要bindable:true。 –

1

除了Sergio的答案

generator策略是assigned這意味着應用程序必須assign一個id,同時節省的對象。如果你做了這樣的事情下文,那麼你應該能夠得到User.get(1)否則將拋出一個異常,同時節省了不分配的id

def user = new User(id: 1).save(flush: true)

+0

正如我評論塞爾吉奧的答案,編號沒有被分配在構造函數中,所以我不得不補充: id bindable:true – chozero

+0

我這樣做,但id沒有被分配。我不得不添加ID綁定:真正的域約束,使這項工作。 – chozero

+0

我同意。我道歉我實際上是想'user.id = 1',然後'user.save(flush:true)'。被一條襯裏的概念帶走了。 :) – dmahapatro