Hibernate 使用createCriteria的嵌套联接查询

Hibernate 使用createCriteria的嵌套联接查询,hibernate,grails,gorm,Hibernate,Grails,Gorm,我使用的是Grails3.x。我有以下简单的领域: class Classification { String name static belongsTo = [instrument: Instrument, ptf: Portfolio] } class Instrument { Long internalId String name static hasOne = [classification: Classification] static

我使用的是Grails3.x。我有以下简单的领域:

class Classification {
    String name

    static belongsTo = [instrument: Instrument, ptf: Portfolio]
}

class Instrument {

   Long internalId
   String name

   static hasOne = [classification: Classification]
   static hasMany = [analisys: Analisys]
}

class Analisys {

   Instrument instrument
   int serialId

}
我正在尝试执行以下查询:

  def results = Classification.createCriteria().list() {
        ptf {
            eq("id", 10l)
        }
        instrument {
            analisys{
                  eq("serialId", 5)
             }
        }
        instrument {
                eq("name", "testName")
            }

    return results
}
它是有效的,但根本不考虑约束eq(“serialId”,5)。有什么想法吗

谢谢

我这样更改查询,即使CriteriaSpecification不推荐使用,它也可以工作

   def results = Classification.createCriteria().list() {
        ptf {
            eq("id", 10l)
        }
        instrument {
          eq("name", "testName")

          analisys(org.hibernate.criterion.CriteriaSpecification.LEFT_JOIN){
                  eq("serialId", 5)
             }
        }
    return results
}

您是否尝试过将
eq(“name”,“testName”)
移动到
仪器
的上一个关闭中,但在
分析
关闭之前/之后。这样,您的标准中只有一个
工具
闭包?感谢您的点击,我只是尝试一下:没有幸运的人可以使用
JoinType
而不是
CriteriaSpecification
,因为它已被弃用。这是你的电话号码