【问题标题】:Grails --illegal attempt to dereference collection error in HqlGrails -- 非法尝试取消引用 Hql 中的集合错误
【发布时间】:2023-04-09 10:15:01
【问题描述】:

我有一个培训领域类

    class Training {

     String type
     Date createdOn
     Date modifiedOn

    static belongsTo = [course: Course]
    static hasMany = [attachments: Attachment]
  }

我有课程领域类

     class Course {

          String name

          static hasMany = [trainings: Training, tracks: Track]
          static belongsTo = Track
   }

和跟踪域类

    class Track {
        String name 
    }

我想根据赛道选择训练。

现在说我得到了 Track id,我想根据 Track id 检索训练

我尝试过这样的查询

 def query = "FROM Training AS t WHERE  t.course.tracks.id IN (1,2)"
  trainingList = Training.findAll(query)

它给了

 illegal attempt to dereference collection

错误..因为我做不到t.course.tracks.id

如果我有跟踪 ID(比如 1、2),请帮助我编写正确的 hql 查询以获得培训

【问题讨论】:

    标签: hibernate grails groovy hql grails-orm


    【解决方案1】:

    你能做的就是这个

    def query = "FROM Training AS t join t.course as c join c.tracks as tr WHERE  tr.id IN (1,2)"
    trainingList = Training.findAll(query)
    

    问题是当您尝试从一个到多个时。

    【讨论】:

      【解决方案2】:

      请在 HQL 下方检索 traacid 1 和 2 的所有训练。

      来自课程 c、Track tr、Training t 其中 tr.courceid= c.courceid 和 tr.trackid=c.tracid 和 tr.trackid 在(1,2)

      【讨论】:

        猜你喜欢
        • 2011-09-18
        • 1970-01-01
        • 2015-11-27
        • 2012-10-17
        • 2014-09-05
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2015-12-05
        相关资源
        最近更新 更多