Grails按标准查​​找现有记录

时间:2015-07-13 19:21:02

标签: 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'
  ...
}

应用程序代码可以多次发布,然后与空白分隔的“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+'%')
};

比原始问题更容易阅读和理解。

0 个答案:

没有答案