【问题标题】:Can't create grails Criteria query containing a belongsTo relation无法创建包含 belongsTo 关系的 grails Criteria 查询
【发布时间】:2011-05-02 08:11:00
【问题描述】:

我一直在尝试创建一个包含 belongsTo 关系的标准构建器,但尚未成功。考虑以下模型:

class Msg {
    ...
    static belongsTo = [user: User]
    ...
}  

class User {
    ...
    Organisation organisation
    ...
}  

我正在尝试进行以下查询:

Msg.createCriteria().list() {
    ...
    user {
        eq("organisation", organisationInstance)
    }
    ...
}

我得到的只是以下错误

ERROR errors.GrailsExceptionResolver  - No signature of method: static User.call() is applicable for argument types: (MsgService$_findMessages_closure1_closure6) values: [MsgService$_findMessages_closure1_closure6@afcba8]
Possible solutions: save(), wait(), any(), getAll(), save(java.lang.Boolean), save(java.util.Map)

我尝试向条件查询添加不同的小补充,例如:

join "user"
fetchMode("user", org.hibernate.FetchMode.EAGER)

但还是遇到同样的问题。

我什至尝试将以下静态映射添加到 Msg 类:

static mapping = {
    columns {
        user lazy: false
    }
}

还是不行。

有没有办法使用包含belongsTo 查询的标准构建器?

提前感谢您的帮助。
吕西安

【问题讨论】:

    标签: grails criteria grails-orm hibernate-criteria


    【解决方案1】:

    我找到了解决方案!这个问题根本与标准构建器无关。在这种情况下,我在范围内有一个用户变量。一旦删除它,它就像一个魅力:-)

    【讨论】:

    • 它在敲了我很长时间的头后有所帮助。错误没有给出关于这个问题的任何线索。感谢分享
    • 谢谢!我以前也遇到过这个问题,现在又遇到了。谢谢你刷新我的记忆。骗我两次……
    【解决方案2】:
    def criteria = Msg.createCriteria()
    results = criteria.list{
        user{
            eq("organisation", organisationInstance)
        }
    }
    

    【讨论】:

    • 和上面的例子有什么区别?
    • 对不起,我拼错了。它当然应该包含一个“()”。更正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2019-02-15
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多