0

次のようなメソッドがあります。

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

テストデータを使用して2回呼び出しています。

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

上記の 2 つのステートメントの結果は次のようになります。

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はnullです。2番目のケースでは、オブジェクトが見つかりません。

次のようなものを使用できます。

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

お役に立てれば。

于 2013-02-26T14:55:48.130 に答える
0

最初のケースは、if ステートメント内で true を返す必要がある UserEvent のインスタンスを返します。2 番目のケースは null を返しますが、if ステートメント内では false を返す必要があります。

于 2013-02-26T16:25:43.420 に答える