是否可以使用JPA和Spring boot将最后的元素分组

是否可以使用JPA和Spring boot将最后的元素分组,spring,spring-boot,jpa,Spring,Spring Boot,Jpa,我有一个如下所示的数据集: name | rang boo | 4 boo | 2 boo | 1 foo | 3 foo | 1 zoo | 2 zoo | 1 @Repository public interface FooRepository extends CrudRepository<FooDb, String> { Set< FooDb > findAllByNameAndMaxDate(String name); } 我想通过spr

我有一个如下所示的数据集:

name | rang
boo  | 4
boo  | 2
boo  | 1
foo  | 3
foo  | 1
zoo  | 2
zoo  | 1
@Repository
public interface FooRepository extends CrudRepository<FooDb, String> {
    Set< FooDb > findAllByNameAndMaxDate(String name);
}
我想通过spring boot jpa选择:

name | rang
boo  | 4
foo  | 3
zoo  | 2
因为我有一个更大更复杂的数据集,所以这个例子很简单

我希望能找到这样的东西:

name | rang
boo  | 4
boo  | 2
boo  | 1
foo  | 3
foo  | 1
zoo  | 2
zoo  | 1
@Repository
public interface FooRepository extends CrudRepository<FooDb, String> {
    Set< FooDb > findAllByNameAndMaxDate(String name);
}
@存储库
公共接口FoodRepository扩展了Crudepository{
设置findAllByNameAndMaxDate(字符串名称);
}

我想你可以做到这一点

在您的情况下,它可能看起来像:

@Query("SELECT t.name, MAX(t.rang) FROM table t WHERE t.name=?1 GROUP BY t.name")
Set<FooDb> findAllByNameAndMaxDate(String name);
@Query(“从表t中选择t.name,MAX(t.rang),其中t.name=?1个按t.name分组”)
设置findAllByNameAndMaxDate(字符串名称);

如果不知道您的数据集看起来像什么,我不可能在这里创建查询,但我希望这会有所帮助。

默认查询方法用于对实体的简单操作<代码>分组依据不受支持,您必须手动在方法上设置
@Query(“选择…分组依据…”)
注释以实现所需的SQL查询。此方法不起作用@Query(“从表t中选择t,MAX(t.rang)按t.name分组”)set findAllByMaxDate();因为它是一个聚合函数