Java 如何使用SpringJPA/Hibernate将单个表查询的1列映射到集合

Java 如何使用SpringJPA/Hibernate将单个表查询的1列映射到集合,java,hibernate,jpa,spring-data,Java,Hibernate,Jpa,Spring Data,我想知道是否有一种方法可以做一些事情,比如流API groupingBy收集器。我知道如何选择一列(问题被标记为重复,我不相信它是重复的),我想做一个分组(像java Stream API的groupingBy收集器一样),而不是分组依据。 假设您有一张桌子(一张桌子),如下所示: 我想要一些像 @Entity @Table("MyTable") public class MyEntity { @Column("column_A") private

我想知道是否有一种方法可以做一些事情,比如流API groupingBy收集器。我知道如何选择一列(问题被标记为重复,我不相信它是重复的),我想做一个分组(像java Stream API的groupingBy收集器一样),而不是分组依据。 假设您有一张桌子(一张桌子),如下所示:

我想要一些像

@Entity
@Table("MyTable")
public class MyEntity {
  @Column("column_A")
  private int a;
  
  @Column("column_B") ?
  private List<Integer> b; //normanly this wuould just be int b, butI want a list of all b's that have the same a
}
@实体
@表格(“MyTable”)
公共类MyEntity{
@栏(“A栏”)
私人INTA;
@列(“列B”)?
private List b;//通常这个值应该是int b,但是我想要一个包含所有具有相同a的b的列表
}
像回购协议一样

public interface MyCrudRepo extends CrudRepository<MyEntity,Integer>{
  List<MyEntity> findByA();
} 
公共接口MyCrudepo扩展了Crudepository{
列出findByA();
} 

公共接口MyCrudepo扩展了Crudepository{
@查询(“从MyEntity m中选择m.a、m.b”)
列出customFind();
} 

这不一定是它应该如何看待结束,任何类似的工作方式都是好的。我已经研究了投影,但是所有的例子都使用了两个不同的表。

使用JPQL没有具体的方法来完成您需要的工作。相反,您可以使用Hibernate,它允许您将查询结果转换为您需要的任何内容。这是一个代码解决方案,类似于在列表结果中使用流API实现分组,并返回包含聚合数据的映射。

您的问题不清楚您想要得到什么。请尝试提供有关问题和预期输出的更多说明对于一个包含列a和列b的表,我需要一个包含“a”的对象和共享相同“a”的所有“b”的列表。这与使用@OneToMany有两张表的情况类似,但我只有一张表。
public interface MyCrudRepo extends CrudRepository<MyEntity,Integer>{
  List<MyEntity> findByA();
} 
public interface MyCrudRepo extends CrudRepository<MyEntity,Integer>{
  @Query("SELECT m.a,m.b FROM MyEntity m")
  List<MyEntity> customFind();
}