Java 带有POJO的嵌套集合
我正试图遵循本博客中列出的相同方法来避免N+1问题。 我创建了5个具有多对1关系的类,如下所示: 树干->树枝1->树枝2->树枝3->树叶 我正在尝试构建符合要求的XML映射程序,但在运行时失败,错误是“class com.mytest.branch1”中没有属性“Branch2” 我已经将XML映射器定义为Java 带有POJO的嵌套集合,java,mybatis,Java,Mybatis,我正试图遵循本博客中列出的相同方法来避免N+1问题。 我创建了5个具有多对1关系的类,如下所示: 树干->树枝1->树枝2->树枝3->树叶 我正在尝试构建符合要求的XML映射程序,但在运行时失败,错误是“class com.mytest.branch1”中没有属性“Branch2” 我已经将XML映射器定义为 <mapper namespace="com.mytest.test"> <resultMap id="resultTest" type="com.mytest.t
<mapper namespace="com.mytest.test">
<resultMap id="resultTest" type="com.mytest.test.trunk">
<id property="TrunkID" column="TRUNK_ID" />
<collection property="Branch1" column="BRANCH_1_ID" javaType="ArrayList" ofType="com.mytest.test.branch1">
<id property="branch1ID" column="BRANCH_1_ID">
<collection property="Branch2" column="BRANCH_2" javaType="ArrayList" ofType="com.mytest.test.branch2">
<id property="branch2ID" column="BRANCH_2_ID">
<collection property="Branch3" column="BRANCH_3" javaType="ArrayList" ofType="com.mytest.test.branch3">
<id property="branch3ID" column="BRANCH_3_ID">
<result property="Value" column="Value">
</collection>
</collection>
</collection>
</resultMap>
<select id="getAllNodes" resultMap="resultTest">
select n.TRUNK_ID,b.BRANCH_1_ID,b.BRANCH_2_ID,b.BRANCH_3_ID,b.VALUE FROM node n join branches b on n.node_id=b.node_id
</select>
</mapper>
这里有两件事
首先,您是否尝试编译您的代码?
BranchX
类(以及Trunk
)没有列表
字段的名称。
应该是这样的:
public class Trunk {
private int TrunkID;
private List<Branch1> listOfBranches; // name added
}
外部
元素是Branch1
的数组列表它有两个内部要素:
正确映射到
类中的Branch1
字段branch1ID
应该映射到
类中的Branch1
字段-该字段不存在Branch2
列表
字段,即:
public class Trunk {
private int TrunkID;
private List<Branch1> branch1;
}
public class Branch1{
private int Branch1ID;
private List<Branch2> branch2;
}
公共类中继{
专用int中继ID;
私人名单1;
}
公共课1{
私人内部分支机构1id;
私人名单2;
}
等等
希望这有助于理解问题所在。请向我们展示
branch1
,branch2
,branch3
类。@MichałRybak补充到问题中。对不起,我的代码有点模糊……我会更正问题。
public class Branch2{
private int Branch2ID;
private List<Branch3> Branch3;
//getters and setters ...
}
public class Branch3{
private int Branch3ID;
//getters and setters ...
}
public class Trunk {
private int TrunkID;
private List<Branch1> listOfBranches; // name added
}
<collection property="Branch1" column="BRANCH_1_ID" javaType="ArrayList" ofType="com.mytest.test.branch1">
<id property="branch1ID" column="BRANCH_1_ID">
<collection property="Branch2" column="BRANCH_2" javaType="ArrayList" ofType="com.mytest.test.branch2">
...
</collection>
</collection>
public class Trunk {
private int TrunkID;
private List<Branch1> branch1;
}
public class Branch1{
private int Branch1ID;
private List<Branch2> branch2;
}