我知道如何使用该类中的方法使用Spring JdbcTemplate处理和返回对象集合。我的问题是集合中的对象也有自己的集合。因此,我的常规RowMapper方法无法实现。
环境:Java 8,Spring 4.x,Tomcat,Oracle。
我有:
Public class Human{
String name;
Long id
List<Child> children;
}
Public Class Child{
String name;
int age;
long id
}
我想回来
列出这样的人
List index --- ---------- contents
0--> Hunan1 {child1, child2, child3} -- has three three
1--> Human2 {} – has no child
2--> Human3{childx, childy} – has 2 children
我的Oracle表是这样的:
Human
Id Name address
1 James 123 Main street
2 Bob 246 Broad street
3 Tiger 850 First street
Child
Id Name age
5 Dave 10
7 Lille 15
Human_Child
HumanId ChildId xzy
1 5
1 7
2 5
3 0
SQL
SELECT hm.id, hm.name, ch.id, chi.name
FROM HUMAN hm
left outer JOIN HUMAN_CHILDREN hm_ch ON hm_ch.id = hm.id
left outer JOIN CHILD ch ON ch.id = hm_ch.id
ResultSet
humanId HumanName ChildId ChildName
1 James 5 Dave
1 James 7 Lille
2 Bob 5 Dave
3 Tiger Null null
我希望詹姆斯成为清单中的一个对象,但詹姆斯应该有一个清单,如前所述,该清单本身容纳着他的两个孩子。我想我可以返回一个包含重复人类的列表,而是使用地图来创建子列表,但这将导致过多的循环-我只想在DAO层中一次完成所有操作,同时处理转结果。我该如何实现?
答案 0 :(得分:0)
无法在RowMapper
的{{1}}中执行此操作。您需要做的是在Human
上加载Children
的ID,然后编写一个单独的方法,该方法执行单独的数据库调用以检索具有这些ID的Human
并将它们加载到{ {1}}。