我有一张桌子A和一张桌子B。 表A的元素与表B中的元素相关(一对多)。 我正在做一个简单的左联接,需要处理结果,但是这样做并不舒服...
例如,以下是测试数据: 表A(“ table_a”)
+--------+---------------+
| id | value |
+--------+---------------+
| 1 | A1 |
| 2 | A2 |
+--------+---------------+
表B(“ table_b”)
+--------+------+---------------+
| id | a_id | value |
+--------+------+---------------+
| 1 | 1 | B1 |
| 2 | 1 | B2 |
| 3 | 2 | B3 |
| 4 | 2 | B4 |
| 5 | 2 | B5 |
+--------+------+---------------+
我正在使用Jpa查询(在存储库中定义),该查询扩展了JpaRepository接口。
我同时拥有这两个表的实体:
UPD。
@Data
@Entity
@Table(schema = "common", name = "table_a")
public class TableA {
@Id
@Column(name = "id")
private Long id;
@Column(name = "value")
private String value;
}
@Data
@Entity
@Table(schema = "common", name = "table_b")
public class TableB {
@Id
@Column(name = "id")
private Long id;
@Column(name = "a_id")
private Long aId;
@Column(name = "value")
private String value;
}
和一个jpa存储库:
public interface TableRepository extends JpaRepository<TableA, Long> {
interface BothTables {
String getTableAValue();
String getTableBValue();
}
@Query("SELECT ta.value as tableAValue, tb.value as tableBValue FROM TableA as ta LEFT JOIN TableB as tb ON ta.id = tb.aId")
Collection<BothTables> findAllData();
}
当我得到查询结果时,我会得到这样的信息:
+-------------+-------------+
| tableAValue | tableBValue |
+-------------+-------------+
| A1 | B1 |
| A1 | B2 |
| A2 | B3 |
| A2 | B4 |
| A2 | B5 |
+-------------+-------------+
有没有办法以某种方式迭代结果集,这样我就可以通过A值对结果集的每个值进行迭代...类似这样:
A1
|_B1
|_B2
A2
|_B3
|_B4
|_B5
不是这样的:
A1 - B1
A1 - B2
A2 - B3
A2 - B4
A2 - B5
任何人都可以通过一些代码建议我如何实现这种迭代吗?