hibernate - 如何在Grails中针对Joda LocalDate针对月份和日期进行查询

标签 hibernate grails jodatime

当持久数据类型为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/

相关文章:

hibernate - 无法使用从同一 Maven 原型(prototype)创建的两个 SpringMVC Web 应用程序启动 Tomcat 服务器

oracle - JodaTime或Java 8是否具有对JD Edwards日期和时间的特殊支持?

java - 使用时间戳和偏移量进行时间处理

java - 使用 Swagger 注释出现意外 token 错误

grails - 在 Controller 的条件内调用 namedQuery

oracle - 使GORM/hibernate 与设置主键的触发器一起使用的方法

java - 我如何同时使用 org.joda.time.LocalDate 和 java.time.LocalDate;

java - Hibernate 创建了前缀为 (public.) 的 postgreSQL 表

java - Hibernate JPA columnDefinition 序列不生成

java - Hibernate EHCache 程序的问题