如何将表id | parent_id | name
映射到我的pojo类:
public class Node {
private Integer id;
private Integer parentId;
private String name;
private List<Node> children;
//getters and setters
}
我想获取带有填充子列表的根节点列表(parent_id = null)。树深度没有限制。我在想类似的东西:
<resultMap id="nodeResult" type="Node">
<id property="id" column="id"/>
<result property="parentId" column="parent_id"/>
<result property="name" column="name"/>
<collection property="children" resultMap="nodeResult"/>
</resultMap>
<select id="selectNode" resultMap="nodeResult">
SELECT * FROM NODE
</select>
我不知道对子级列表设置限制:id = parentId。我不想使用嵌套选择
最佳答案
没有办法让任意深的树自动地填充到ResultMap中。
是否可以选择特定于数据库的解决方案?例如,在PostgreSQL中,您可以使用公用表表达式将数据选择到ResultSet中,该数据可能适用于映射到树中。
否则,您应该只更改ResultMap中的集合定义以指向查询以选择子项,这些子项可以重用相同的resultmap来获得递归行为。