【发布时间】:2012-02-01 12:49:59
【问题描述】:
Grails 1.3.7
当我尝试调用我的命名查询时,我收到了这个奇怪的错误。定义如下;
containsQuery { query ->
or{
ilike("name", '%' + query + '%')
ilike("description", '%' + query + '%')
tokens{
ilike("token", '%' + query + '%')
}
}
我得到的错误是:
Error 500: Executing action [list] of controller [net.turkino.tokenadmin.reg.ItemController] caused exception: duplicate association path: tokens
Servlet: grails
URI: /grails/item/list.dispatch
Exception Message: duplicate association path: tokens
Caused by: duplicate association path: tokens
Class: ItemController
At Line: [75]
第 75 行是:
items = itemQueryResult.listDistinct(params)
itemQueryResult 在哪里
itemQueryResult = Item.belongsToOwner(SecurityUtils.subject.principal).containsQuery(params.q)
有什么问题?我是否不允许在我的 namedQuery 中使用令牌?
更新:有关域类的信息:
class Item{
... // a lot of fields
static hasMany = [ tokens:TokenTag]
static belongsTo = [owner: User]
static mappedBy = [ tokens: 'item' ]
static mapping = { tokens lazy:false }
... // constraints to fields, named queries etc.
static namedQueries = {
belongsToOwner { email ->
owner{
eq("email", email)
}
}
....
}
}
class TokenTag{
... // fields
String token
String tokenAsQRString
Item item
... // other fields
static belongsTo = [tagSheet:TokenTagSheet]
...
}
【问题讨论】:
-
了解更多有关查询中涉及的域类的信息可能会有所帮助。
-
确定 - 什么样的信息?我添加了一些有关所涉及课程的信息
-
TokenTag 是否有属性 'tokens' 或 'token' ?
-
是的,让我扩展关于 TokenTag 类的信息
-
我试图重现这个但不能。它在 grails 2.0 上运行良好。你用的是什么版本的grails?我也认为“belongsToOwner”是另一个命名查询,它是什么样的?
标签: grails named-query