hibernate - Grails -- 非法尝试取消引用 Hql 中的集合错误

标签 hibernate grails groovy hql grails-orm

我有一个培训领域类(class)

    class Training {

     String type
     Date createdOn
     Date modifiedOn

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

我有类(class)领域类(class)
     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 查询以获得培训

最佳答案

你能做的就是这个

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)

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

关于hibernate - Grails -- 非法尝试取消引用 Hql 中的集合错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406128/

相关文章:

grails - 使用groovy 1.8及更高版本重写渲染方法

Groovy:有没有在参数拷贝后调用的构造函数?

elasticsearch - Groovy脚本 Elasticsearch 的日期差异

java - org.hibernate.MappingException : Unknown entity:

java - 反序列化 hibernate 和 jackson 中的延迟加载

java - 保持多对多关系时出现 PropertyAccessException

java - "java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerFactoryImpl.createEntityManager" hibernate

grails - 单击按钮时如何弹出日历并在Grails 3.3.9的文本字段中存储值

grails - 如何在Grails 3.3.9中编译在服务内部编写的代码

java - 如何使用嵌入了WildFly 8.0.0的Arquillian?