【发布时间】:2019-09-08 20:16:34
【问题描述】:
我想在一个字段和两个日期之间从数据库中获取唯一值
我的实体字段访问:
- 身份证
- 客人身份
- 日期
我有一些方法,我想通过唯一字段“guestId”获取访问列表:
@Query("SELECT DISTINCT v FROM Visit v WHERE v.date BETWEEN :start AND :to")
List<Visit> getBetween(@Param("start") Date start, @Param("to") Date to);
但我在此期间获得了所有实体的列表。
我试过查询:
"SELECT DISTINCT FROM visits WHERE date BETWEEN :start AND :to"
但它也不起作用。
例如:
表“访问”示例:
Id GuestId Date
100 200 2019.09.07
101 201 2019.09.07
102 200 2019.09.07
103 201 2019.09.08
104 201 2019.09.08
105 200 2019.09.08
106 201 2019.09.09
107 201 2019.09.09
108 200 2019.09.09
接下来我要查询
SELECT DISTINCT FROM visit WHERE date BETWEEN :'2019.09.08' AND :'2019.09.08'"
我想获取以下列表:
GuestId Date
201 2019.09.08
200 2019.09.08
请帮我找到执行查询
谢谢。
【问题讨论】:
-
向我们展示一些示例表数据和预期结果。 (作为格式化文本,没有图像。)
-
为什么不
SELECT DISTINCT guestId FROM...? -
添加到描述中的表格示例
-
"SELECT DISTINCT guestId FROM visit WHERE date BETWEEN :start AND :to" 不起作用,我得到异常调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Validation failed for query for public abstract java.util.List com.java.library.repository.DataJpaRepository.getBetween(java.util.Date,java.util.Date)!
-
因为您的实体名为 Visit,而不是 visit。而且您必须使用别名:
select distinct v.guestId from Visit v where v.date between :start and :to
标签: sql spring hibernate spring-data-jpa