【发布时间】:2018-05-22 23:59:07
【问题描述】:
我有一个使用 mysql 的简单 Spring Data JPA 项目,我需要获取与日期和月份匹配的所有寄存器。我需要过滤的列是日期时间类型。
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 语句,但如果这是唯一的方法,那么它是一个有效的答案。
我该怎么做?
【问题讨论】:
-
如果你想像 '%%' 一样使用你必须将类型更改为字符串
-
把方法名改成
findByEventDateGreaterThanAndEventDateLessThan(Date startDate, Date endDate)怎么样 -
是的,特别是问题在于我需要它返回类似“历史上的这一天”的内容,因此它应该返回多年来这一天发生的所有事情。
-
@Osgux 有没有办法在不修改我的实体中的 eventDate 属性的情况下做到这一点?我在其他通话中使用它。
标签: java spring jpa spring-data spring-data-jpa