Java 带有POJO的嵌套集合

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

我正试图遵循本博客中列出的相同方法来避免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.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;
}