如何从列中获取不同的值?

时间:2019-07-23 12:50:46

标签: java spring jpa spring-data-jpa jpql

我有一个简单的表来模拟一个人:

ID   |   AGE   |   NAME   |
---------------------------
1    |   40    |   Peter  |
---------------------------
2    |   39    |   John   |
---------------------------
3    |   40    |   Lora   |
---------------------------
4    |   40    |   Mark   |
---------------------------
5    |   38    |   Anna   |
---------------------------

我想要一个方法,该方法不重复地返回包含不同年龄的整数列表,在这种情况下,结果将是[38,39,40]。

我有:

List<Integer> findDistinctAge(); 

但不起作用。我知道我可以在方法签名上方使用@Query批注,在表上指定查询。但是我不想使用它,我想使用JPA语法,所以方法的名称定义了查询。

非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

`List<person> findDistinctAge();`

应该工作。否则,请发布您的完整代码。

答案 1 :(得分:0)

您需要在方法名称中添加“按”,这将返回具有不同年龄的“人员”列表:

List<person> findDistinctByAge();

您可以在进一步的呼叫中使用person.age参数,也可以从个人列表创建新列表。 我认为没有直接方法可以返回年龄列表。

答案 2 :(得分:0)

使用Projections,您可以尝试达到目的:

public interface OnlyAge {
    Integer getAge();
}
List<OnlyAge> findDistinctBy();