【问题标题】:Grails: namedQuery error: duplicate association pathGrails:namedQuery错误:重复的关联路径
【发布时间】: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


【解决方案1】:

我发现了一个 JIRA 问题 http://jira.grails.org/browse/GRAILS-7324,它可能解释了这种行为。这已在 2.0-M2 中修复。可能你在“params”中有一个排序参数“tokens”或“tokens.token”。

您可以删除排序参数,看看它是否能解决您的问题。如果您绝对需要按“令牌”排序,请考虑升级 Grails 版本或使用上述问题中的修复修补当前版本。

【讨论】:

  • 确认:if(!params.sort) params.sort = 'tokens.id'。非常感谢!这只是完美的答案
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多