grails - CreateCriteria-在hasMany关联中使用逻辑或

标签 grails gorm has-many createcriteria

我想获取在其列表(firstsList或SecondsList)中包含特定用户的实例。
在我的解决方案中,创建条件仅考虑第一批用户。
逻辑OR的用法似乎不正确


class ClassA {
    static hasMany =  [firstsList:User,SecondsList:User]
}

服务
def idList =  ClassA.createCriteria().list () {

projections { distinct ( "id" )
    property("name")
    property("id")
}

or {                 
   firstsList{eq("login", 'John')}             
   SecondsList{eq("login", 'John')}                                 
 }

order("name","desc")

}

return idList

最佳答案

其背后的原因是默认情况下使用inner join进行休眠。但是在您的情况下,您需要left join。为此,您可以使用createAliascreateCriteria

    def idList = ClassA.createCriteria().list() {
        projections { 
            distinct("id")
            property("name")               
        }

        createAlias("firstsList", "fl", JoinType.LEFT_OUTER_JOIN)
        createAlias("SecondsList", "sl", JoinType.LEFT_OUTER_JOIN)
        or {                 
            eq("fl.login", "John")             
            eq("sl.login", "John")                                
        }

        order("name", "desc")
    }

关于grails - CreateCriteria-在hasMany关联中使用逻辑或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883882/

相关文章:

mysql - Rails mysql : How to query tables with deeply nested relations(has_many and belongs_to)?

ruby-on-rails - Rails 协会不会触发 Postgres 查询并返回 Nil

apache - Apache 和 SSL 背后的 Tomcat

grails - Grails-Inputfields显示一个十进制数字的点('.'而不是(',')

mongodb - 动态域模型属性未加载

grails - 如何在Grails中用于继承的数据库列 'class'中添加索引?

grails - 具有条件的Grails可搜索插件

tomcat - Grails,需要使用 url 读取文本文件以获得 ssl 证书

grails - 如何使用属性名称访问域属性?

node.js - Nodejs 使用 Sequelize。 "[].belongsTo called with something that' 不是 Sequelize.Model at Function 的子类。”