GORM / grails深层独特的关联查询标准

时间:2011-02-11 15:58:48

标签: grails groovy gorm

我为以下查询中指定的每个表都有域对象。我在创建表示以下SQL查询的withCriteria闭包时遇到了问题。有什么想法吗? 谢谢! 史蒂夫

SQL查询:

select A_NAME from A 
where A_XID = 
  (select A_XID from B
   where B_XID = 
     (select distinct B_XID from C
      where D_XID = '${d.dXid}')

域对象:

class A {
  String aName
  BigDecimal aXid         <-- unique identifier
}

class B {
    A a
    BigDecimal bXid   <-- unique identifier
}

class C {
    D d
    B b
}

1 个答案:

答案 0 :(得分:1)

我不确定如何使用条件查询来执行此操作,但在HQL中它将是

String aName = A.executeQuery(
   'select c.b.a.aName from C c where c.d = :d',
   [d: d])[0]

但是你遗漏了很多信息,所以这是基于你有这些域类的假设(你省略了D类和映射):

class A {
   String aName
   BigDecimal aXid
}

class B {
   A a
   BigDecimal bXid
   static mapping = {
      a column: 'A_XID'
   }
}

class C {
   D d
   B b
   static mapping = {
      b column: 'B_XID'
      d column: 'D_XID'
   }
}

class D {
   String someProperty
}