当持久数据类型为Binary(255)时,如何基于Joda LocalDate对象的月和日组成部分有效地执行查询。
我要完成的工作是找到其dateOfBirth(LocalDate)发生在今天的date(LocalDate)上的“客户”。
使用Criteria查询似乎是不可能的,并且回溯到HQL难以解决的查询(例如
def startDate = LocalDate.now()
def entries = Customer.executeQuery("SELECT c FROM Customer AS c " +
"WHERE DAY(c.dateOfBirth) = DAY(:today) AND " +
"MONTH(c.dateOfBirth) = MONTH(:today) ",[today:startDate])
由于LocalDate类型。
最佳答案
使用sqlRestriction
:
def startDate = LocalDate.now()
def entries = Customer.withCriteria{
sqlRestriction 'DAY(dateOfBirth) = DAY(now()) AND MONTH(dateOfBirth) = MONTH(now())'
}
这使您可以将SQL与Criteria混合使用。
day()
,month()
和now()
函数应存在于您的数据库中,但是您必须检查一下
关于hibernate - 如何在Grails中针对Joda LocalDate针对月份和日期进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32311826/