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

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)

最佳答案

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

因此,在第一种情况下,将返回一个实例,但其ID为null。
在第二种情况下,找不到对象。

您可以使用类似:

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

希望这可以帮助。

10-08 02:04