Grails将SQL转换为Grails条件查询

时间:2015-05-29 08:57:33

标签: sql grails criteria-api detachedcriteria

我有以下域名结构: -

class A{
  B b
  C c
  String email
}

class B{}

class C {
  D d
}

class D{}

以下是我需要转换为Grails Criteria Query的SQL查询。

select * from A aa  
  inner join C ca on ca.c_id = aa.id and aa.email = 'source'
  inner join D da on da.id = ca.d_id
  inner join B ba on aa.b_id = ba.id
  inner join A aa1 on b.id = aa1.b_id and aa1.email = 'response'

2 个答案:

答案 0 :(得分:0)

为了使用hibernate / GORM实现您想要的查询,您必须稍微扩展您的域类:

class A{
  B b
  C c
  String email
  A a // self-ref
}

然后您的查询应如下所示:

A.withCriteria{
  eq 'email', 'source'
  a{ 
    eq 'email', 'response'
  }
}

答案 1 :(得分:0)

我已将表重命名为有意义的内容,如:

class Apple{
  Ball ball
  Cat cat
  String email
}

class Ball{}

class Cat {
  Dog dog
}

class Dog{}

创建标准是:

return Apple.createCriteria.list() {

    and {
        and {
            eq("email", "source")
            cat
        }
        and {
            cat {
                dog
            }
        }
        and {
            eq("email", "response")
            ball
        }
    }
}

如果您有真实数据,请告诉我您是否需要任何帮助。

您还可以查看this example