groovy中不同类型的null

时间:2013-02-26 14:27:25

标签: 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]
}

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

    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)

2 个答案:

答案 0 :(得分:1)

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

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

您可以使用以下内容:

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

希望这有帮助。

答案 1 :(得分:0)

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