我有(其中包括)两个域类:
class Course {
String name
...
}
class Round {
Course course
String startweek // e.g. '201504'
String endweek // e.g. '201534'
String applcode // e.g. 'DA542133'
...
}
应用程序代码可以多次发布,然后与空白分隔的“applcode”连接。当我从不同来源流式传输和解析大量数据(XML格式)时,我可能会偶然发现来自多个来源的相同数据,所以我查看数据库中的记录以查看是否可以丢弃其余的流或不。这是可能的,因为最外面的标记包含声明上述声明的属性的数据。我使用以下方法搜索数据库:
def c = Course.findByName(name);
def found =
Round.findByCourseAndStartweekAndEndweekAndApplcodeLike(c, sw, ew,'%'+appc+'%')
其中参数相当明显并且效果很好,但我发现这些参数可以找到它们,并且可以找到这些参数...'很长,不太可读。我的目标是找到一些更易读,更易于理解的方法。我已经开始阅读有关Criteria和HQL的内容,但我认为一两个例子可以帮助我。
阅读@injecteer提供的链接页面后编辑:
完成上面的查询相当简单。我有更糟糕的事情想弄清楚,但我的例子中的查询变成了标准:
def found = Round.createCriteria().get {
eq ('course', c)
eq ('startweek', sw)
eq ('endweek', ew)
like ('applcode', '%'+appc+'%')
};
比原始问题更容易阅读和理解。