我有以下 Realm 类(class)
class EventA {
static belongsTo = [offer: Offer]
}
class EventB extends EventA {}
class EventC extends EventA {}
class Offer {
static hasMany [events: EventA]
}
我需要检索与
EventC
不相关的报价。在SQL中,可以很容易地执行以下操作:
SELECT *
FROM OFFER O
LEFT JOIN EVENTC C ON O.event_id = C.id
WHERE C.ID IS NULL
在grails文档中搜索,我发现了instanceOf。说明一旦有了结果集,就可以执行实例类型的检查。
def offers = Offer.list()
for (Offer o in offers) {
for(Event e : o.events) {
if (e.instanceOf(EventC)) {
// no bueno
}
}
}
以上只是感觉不对。我更希望数据库为我做这样的过滤。有没有办法用
searchCriteria
执行这样的过滤器? 最佳答案
您可以通过直接查询Event
类来完成此操作。这样,您可以专门查询您关心的Event
的风格。然后使用ID的列表查询Offer
表
Offer.findAllByIdInList(EventC.list().offerId)
关于grails - Grails/Gorm-namedQuery hasMany关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56673375/