0

我有一个看起来像这样的方法:

static UserEvent get(long userId, long eventId) {
     UserEvent.find 'from UserEvent where user.id=:userId and event.id=:eventId',
            [userId: userId, eventId: eventId]
}

我用一些测试数据调用它两次:

    println UserEvent.get(1, 1) //I know this has value
    println UserEvent.get(1,2) //I know this does not

上述两个语句导致:

scheduler.UserEvent : null
null

问题

有什么区别?我怎样才能写一个If条件来判断某事是否存在..

更新

我正在创建这样的对象:

def event = Events.findById(params.eventid)
def user = User.findById(params.userid)

UserEvent.create(user, event, true)
4

2 回答 2

1

@tim_yates 是对的,检索到的对象没有 id 属性。看起来像是 M 对 M 的关系。

所以在第一种情况下,一个实例被返回,但它的 ID 为空。在第二种情况下,找不到对象。

你可以使用类似的东西:

def ue = UserEvent.get(userId, eventId)
if (ue && ue instanceof UserEvent) { //do something } 
else { //do something else }

希望这可以帮助。

于 2013-02-26T14:55:48.130 回答
0

第一种情况返回一个 UserEvent 的实例,它在 if 语句中应该返回 true。第二种情况返回 null,它在 if 语句中应该返回 false。

于 2013-02-26T16:25:43.420 回答