繁体   English   中英

如何使用 Spring JPA/Hibernate 将 SINGLE 表查询的 1 列映射到 COLLECTION

[英]How do I map 1 column of a SINGLE table query to a COLLECTION using Spring JPA/Hibernate

我想知道是否有办法做类似 Stream API groupingBy Collector 的事情。 我知道如何选择一列(问题被标记为重复,我不相信它是)我想做一个分组(比如 java Stream API 的 groupingBy 收集器)而不是一个 group By。 假设您有一张桌子(一张桌子),例如:

+---------------------+
+       myTable       +
+----------+----------+
+ column_A | column_B +
+----------+----------+
+        1 |        1 +
+        1 |        2 +
+        1 |        3 +
+        2 |        1 +
+----------+----------+

我想要一些类似的东西

@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
}

与回购类似

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();
} 

这不一定是它最终应该如何看待,任何与此类似的工作都很好。 我研究了预测,但所有示例都使用 2 个不同的表。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM