Grails groovy中不同类型的null

Grails groovy中不同类型的null,grails,groovy,gorm,Grails,Groovy,Gorm,我有一个方法如下所示: static UserEvent get(long userId, long eventId) { UserEvent.find 'from UserEvent where user.id=:userId and event.id=:eventId', [userId: userId, eventId: eventId] } def event = Events.findById(params.eventid) def user = U

我有一个方法如下所示:

static UserEvent get(long userId, long eventId) {
     UserEvent.find 'from UserEvent where user.id=:userId and event.id=:eventId',
            [userId: userId, eventId: eventId]
}
def event = Events.findById(params.eventid)
def user = User.findById(params.userid)

UserEvent.create(user, event, true)
我用一些测试数据给它打了两次电话:

    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条件来表示某物是否存在

更新

我创建的对象如下所示:

static UserEvent get(long userId, long eventId) {
     UserEvent.find 'from UserEvent where user.id=:userId and event.id=:eventId',
            [userId: userId, eventId: eventId]
}
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 }

希望这有帮助。

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

您是否覆盖了
UserEvent
中的
toString
方法?没有。我的UserEvent方法看起来像spring security plugin中的一个类:但它看起来像是在第一个实例中回调一个
UserEvent
对象(如预期的那样),但当它打印出来时,它正在打印它的某个属性,该属性设置为null。这正是我的类的外观:看起来它正在查找的对象由于某种原因没有
ID
。你是如何创造它们的?