2013-04-16 79 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