2013-02-26 2 views
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 

Вопрос

В чем разница? Как я могу написать условие, если для когда-то присутствует или нет ..

Update

Я создаю объект так:

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

UserEvent.create(user, event, true) 
+1

Вы переопределили метод 'toString' в' UserEvent'? –

+0

нет у меня нет. Мой метод UserEvent выглядит как класс из весеннего плагина безопасности: – birdy

+0

Но похоже, что он возвращает объект UserEvent (как и ожидалось) в первом экземпляре, но когда он его распечатывает, он печатает некоторое свойство его, которое установлено to null –

ответ

1

@tim_yates является правильным, объект который извлекается, не имеет свойства id. Похож на отношения M-M.

Так что в первом случае экземпляр возвращается, но его идентификатор равен NULL. Во втором случае объект не найден.

Вы можете использовать что-то вроде:

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

Надеется, что это помогает.

0

Первый случай возвращает экземпляр UserEvent, который внутри оператора if должен возвращать true. Второй случай возвращает null, который внутри оператора if должен возвращать false.