2012-08-27 23 views
1

我有兩個表:EventSession和EventTrack的Grails GORM:查找缺少的條目在其他表

EventSession的hasMany EventTrack,也可以沒有EventTrack。 EventTrack屬於EventSession。

如何獲取沒有EventTrack(零)的所有EventSession。例如:

def es = EventSession.createCriteria() 
def _es = es.list { 
    count("eventTracks") == 0 // I know this is wrong 
} 

謝謝。

回答

1

Where

EventSession.where { count(eventTracks) == 0 }

Criteria

EventSession.withCriteria { 
    isEmpty 'eventTracks' 
} 
1

HQL能爲你做到這一點:

String hql = "select e from EventSession e " + 
      " where not exists(select 1 from EventTrack t where t.eventSession = e)" 
List<EventSession> eventsWithoutTracks = EventSession.executeQuery(hql) 

隨着createCriteria()我想你可以做同樣的一個左外連接,過濾其中EventTrack的ID爲空(未測試)

def es = EventSession.createCriteria().list() { 
    eventTracks { 
    isNull('id') 
    } 
} 
0

EventSession.findAllByEventTracksIsNull()呢?