GORM/grails深度不同关联查询条件

发布于 2024-10-17 03:56:41 字数 483 浏览 7 评论 0原文

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

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
}

I have domain objects for each table specified in the below query. I'm having trouble creating the withCriteria closure representing the below SQL query. Any thoughts?
Thanks!
Steve

SQL Query:

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}')

Domain Objects:

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

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

class C {
    D d
    B b
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忘你却要生生世世 2024-10-24 03:56:41

我不知道如何使用条件查询来做到这一点,但在 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
}

I'm not sure how to do this with a criteria query, but in HQL it'd be

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

but you've left out a lot of information, so this is based on the assumption that you have these domain classes (you omitted the D class and mappings):

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文