java - Spring Data JPA - 如何仅使用月份和日期从日期列中获取数据?

标签 java spring jpa spring-data spring-data-jpa

我有一个使用 mysql 的简单 Spring Data JPA 项目,我需要获取与日期和月份匹配的所有寄存器。我需要过滤的列是 Datetime 类型。

1935-12-08 00:00:00

如果我想在数据库级别执行此操作,它工作正常:

SELECT * FROM my_database.event where event_date LIKE '%-12-08%';

它将日期视为字符串。现在我需要在我的存储库中执行此操作,但似乎没有任何效果。我尝试了基本的:

List<Event> findByEventDateLike(
        @Param("eventDate") Date eventDate);

但它说它返回一个非法参数异常,因为它是一个 Date 对象。我尝试了其他组合,但显然 spring data jpa 无法将日期与部分信息进行比较。

注意:为了保持简洁,我试图避免使用 @Query 语句,但如果这是唯一的方法,那么它就是一个有效的答案。

我该怎么做?

最佳答案

如果您的 JPA 提供程序是 Hibernate,那么您可以在 JPQL (HQL) 查询中使用 yearmonth(和 other funcs),例如:

@Query("select e from Event e where year(e.eventDate) = ?1 and month(e.eventDate) = ?2")
List<Entity> getByYearAndMonth(int year, int month);

关于java - Spring Data JPA - 如何仅使用月份和日期从日期列中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47719439/

相关文章:

spring - 如何使用 Spring Boot 和 Tomcat 指定我的 .keystore 文件?

java - 是否有任何选项可以使用 Spring-AMQP 在 RabbitMQ 中设置 AutomaticRecoveryEnabled?

java - 一段时间后EntityManager变成NULL(大约10m)

java - 预期错误消息 : ´)´expected, 和 "not a statement"´;´

java GUI布局建议

javascript - 如何使用 java spring 在 javascript jquery 中设置帖子路径

java - Hibernate for Java 1.5 最新版本是多少

java - 将图像保存到数据库时JAVA中的classcastException

java - 为什么Hashmap不同步,Hashmap内部实现了Hashtable(是同步的)。

java - 使用 Hadoop 构建 Giraph