Grails在不相关的域之间留下了外部连接(单向一对多关系)

Grails在不相关的域之间留下了外部连接(单向一对多关系),grails,hql,criteria,createcriteria,Grails,Hql,Criteria,Createcriteria,我通过下面的链接为我的应用程序的性能带来了一些积极的变化 我有以下两门课 class Topic { String title String body String type User user static mapping = { body type:"text" } } 及 记住以上两个类,是否可以为下面的查询编写等价的条件 SELECT title,follower.user_ID,topic.id FROM TOPI

我通过下面的链接为我的应用程序的性能带来了一些积极的变化

我有以下两门课

class Topic {

    String title
    String body
    String type
    User user

    static mapping = {
        body type:"text"
    }
}

记住以上两个类,是否可以为下面的查询编写等价的条件

SELECT title,follower.user_ID,topic.id  FROM TOPIC 
left outer join follower on topic.id = follower.topic_id
where follower.user_id = 1 or follower.user_id is null;
我提出了以下失败的标准,因为在
主题
中既没有
follower
的引用,也没有这样的标准规范,因此我无法找到将此标准向右连接的方法

def recentQuestions = Topic.createCriteria().list([sort:'lastUpdated',order:'desc',max:5]){
            createAlias  "follower", "f" , CriteriaSpecification.LEFT_JOIN

            or{
                eq('f.user',u)
                isNull('f.user')
            } 
            eq('type','FORUM',[ignoreCase: true])

        }

主题
中没有
追随者
时,您如何为
追随者
创建别名?@dmahapatro这是OP在问题中所说的。他在一个条件中转换了查询,但它失败了,因为Follower没有与主题链接。@Sap您要使用分页还是只显示最后5个主题?一个解决方案是使用HQL来执行您的查询。我知道我总是在星期五搞砸(谢谢@SérgioMichels。是的,HQL将是一个更好的方法。@dmahapatro周五应该是啤酒日,而不是工作日:-)
def recentQuestions = Topic.createCriteria().list([sort:'lastUpdated',order:'desc',max:5]){
            createAlias  "follower", "f" , CriteriaSpecification.LEFT_JOIN

            or{
                eq('f.user',u)
                isNull('f.user')
            } 
            eq('type','FORUM',[ignoreCase: true])

        }