Grails按条件查找现有记录
我有两个域类:Grails按条件查找现有记录,grails,hql,hibernate-criteria,grails-domain-class,Grails,Hql,Hibernate Criteria,Grails Domain Class,我有两个域类: class Course { String name ... } class Round { Course course String startweek // e.g. '201504' String endweek // e.g. '201534' String applcode // e.g. 'DA542133' ... } 应用程序代码可以在多个场合发布,然后与“应用程序代码”连接,用空格分隔。由于我正在以XML格式对来自不同来源的
class Course {
String name
...
}
class Round {
Course course
String startweek // e.g. '201504'
String endweek // e.g. '201534'
String applcode // e.g. 'DA542133'
...
}
应用程序代码可以在多个场合发布,然后与“应用程序代码”连接,用空格分隔。由于我正在以XML格式对来自不同来源的大量数据进行流式处理和解析,我可能会偶然发现来自多个来源的相同数据,因此我会查找数据库中的记录,看看是否可以丢弃流的其余部分。这是可能的,因为最外层的标记包含声明上述声明属性的数据。我使用以下方法搜索数据库:
def c = Course.findByName(name);
def found =
Round.findByCourseAndStartweekAndEndweekAndApplcodeLike(c, sw, ew,'%'+appc+'%')
其中的参数非常明显,而且效果很好,但我发现这些“findByBlaAndBlablaAnd…”很长,可读性不强。我在这里的目的是找到一些更可读,从而更容易理解的方法。我已经开始阅读Criteria和HQL,但我认为一两个例子会对我有所帮助
阅读@injecteer提供的链接上的页面后进行编辑:
上面的查询相当简单。我还有更糟糕的事情要解决,但我的示例中的查询变成了条件:
def found = Round.createCriteria().get {
eq ('course', c)
eq ('startweek', sw)
eq ('endweek', ew)
like ('applcode', '%'+appc+'%')
};
比原来的问题更容易阅读和理解。省去麻烦,开始大量使用命名查询:您在哪里查找hql和criteria的示例?在Thank you@injecteer上有很多例子,如上所述,我刚刚开始阅读,你的链接非常简单。