使用grails、HQL的复杂SQL查询
我试图在HQL grails中编写一个3表联接查询。我的3个类是:使用grails、HQL的复杂SQL查询,grails,hql,gorm,Grails,Hql,Gorm,我试图在HQL grails中编写一个3表联接查询。我的3个类是: class Domains { String name Date ets Account account static hasMany = [facebooks: Facebook, twitters: Twitter] } 我正在尝试获取与域eid相关的FBPOST。我当前的HQL查询如下所示: def fbPosts = FbPosts.findAll("from FbPosts as
class Domains {
String name
Date ets
Account account
static hasMany = [facebooks: Facebook, twitters: Twitter]
}
我正在尝试获取与域eid相关的FBPOST。我当前的HQL查询如下所示:
def fbPosts = FbPosts.findAll("from FbPosts as fb join Facebook as f on f.eid=fb.facebook_eid join Domains as d on d.eid=f.domain_eid where d.eid=?"[domain_eid])
def map = [fbPosts:fbPosts]
而且似乎不起作用。请提供帮助。它是否符合标准
def fbPosts = FbPosts.withCriteria {
facebook {
domains {
eq( 'eid', domain_eid )
}
}
}
那么这个怎么样?缺点是,除非持久性缓存中已经存在domains对象,否则它将导致两个单独的数据库查询
def domainsInstance=Domains.get(domain_eid)
def fbPosts = FbPosts.withCriteria {
facebook {
eq('domains', domainsInstance)
}
}
@JJDev还有,eid从何而来?我在域对象中看不到它…是的,它来自域,所有表的主键是eid,相应表的外键是name_eid,例如:facebook_eid,fbposts_eid,domains_eid。不要问为什么lol,因为我没有创建数据库,那么它应该是域类的一部分吗?
def fbPosts = FbPosts.withCriteria {
facebook {
domains {
eq( 'eid', domain_eid )
}
}
}
def domainsInstance=Domains.get(domain_eid)
def fbPosts = FbPosts.withCriteria {
facebook {
eq('domains', domainsInstance)
}
}