【问题标题】:Domain List fields in Grails 2.4.4Grails 2.4.4 中的域列表字段
【发布时间】:2015-06-27 06:46:11
【问题描述】:

我正在将 2.3 应用升级到 2.4.4,并且我有几个使用类似于以下列表字段的域,并且收到了here 所述的错误。

class Game {
  List score

  static hasMany = [ score: Integer ]
}

我假设使用上述内容是问题的实际原因,但我无法确定,因为错误消息未指向域。

这种类型的列表定义不是 Grails 的好习惯吗?

我得到错误:

2014-10-31 16:26:32 ERROR [context.GrailsContextLoaderListener] Error initializing the pplication: Error creating bean with name 'transactionManagerPostProcessor':
.... 
Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.MappingException: Association references unmapped class: java.util.List

UPDATE

我找到了与错误相关的域和问题。这是问题域和相关列表。如果我删除列表,问题就会得到纠正。

class Team {
  List teamTourney

  static hasMany = [ teamTourney: TeamTourney ]
}

【问题讨论】:

  • “我假设使用上述是问题的实际原因,但我不能确定,因为错误消息没有指向域。” - 如果错误消息没有指向域,为什么您认为问题与域有关?

标签: grails grails-2.4


【解决方案1】:

对于将来可能收到此错误的任何人,您可以添加

log4j = {
    debug  'org.codehaus.groovy.grails.orm.hibernate.cfg'
}

到配置,它会告诉你是什么类和属性导致了问题。

【讨论】:

    【解决方案2】:

    这种类型的列表定义不是 Grails 的好习惯吗?

    您在那里显示的代码应该没问题。请参阅https://github.com/jeffbrown/integerlist 上的项目。

    【讨论】:

    • 错误状态为Association references unmapped class: java.util.List,但未指定导致问题的域(此项目中的 23 个域)。当我发现问题时会报告。谢谢。
    • 如果您定义了一个持久的无类型集合,我希望该消息但在您显示的代码中不是这种情况。 hasMany 表示score 集合中存储的对象类型。如果您注释掉hasMany,就会出现该错误。我会在某处寻找您的hasMany 中未表示的集合。
    • 我找到了有问题的域并更新了上面的问题。我在域之间有一对多的关系,我将它定义为一个列表。如果我删除列表,它会纠正问题。
    • 您的应用中必须有其他因素。你展示的Team 类是完全标准的东西,人们一直都在这样做。如果您可以将问题隔离到一个可以推送到 github 或在其他地方分享的应用程序中,我很乐意看看它。
    • 谢谢。我刚刚制作了一个简单的作者/书籍示例,并在 Author 域中指定 List books 不会重复该问题。正如你所建议的,肯定还有更多事情要做。
    【解决方案3】:

    问题是 List 引用了一个未定义的字段。在我的项目中的域中有一个与列表关联的字段名称中的类型-o。如果错误消息指向错误的位置,那就太好了,也指向in this post

    谢谢,斯科特。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      相关资源
      最近更新 更多