2012-02-01 79 views
1

Grails 1.3.7Grails:namedQuery错误:重复关联路径

当我尝试调用我的命名查询时,出现这个奇怪的错误。它被定义如下:

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中使用令牌吗?

UPDATE:关于域名类信息涉及:

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] 

    ... 
} 
+0

这可能有助于获取有关查询中涉及的域类的更多信息。 – 2012-02-19 20:30:37

+0

肯定 - 什么样的信息?我添加了一些涉及类的信息 – mkk 2012-02-19 20:39:31

+0

TokenTag是否有属性“令牌”或“令牌”? – aldrin 2012-02-20 09:25:07

回答

2

我所在的JIRA问题http://jira.grails.org/browse/GRAILS-7324这或许可以解释这种现象。这是固定在2.0-M2。可能你在'params'中有一个排序参数'tokens'或'tokens.token'。

你可能会删除排序参数,看看它是否能解决你的问题。如果您确实需要按照“代币”进行排序,请考虑升级Grails版本或在上述问题中修复当前版本。

+0

confirm:if(!params.sort)params.sort ='tokens.id'。非常感谢你!这只是完美的答案 – mkk 2012-02-24 12:41:27