Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mybatis“;java.lang.IllegalArgumentException:Result Maps集合已包含“的值”;映射嵌套类时出错_Java_Mybatis - Fatal编程技术网

Mybatis“;java.lang.IllegalArgumentException:Result Maps集合已包含“的值”;映射嵌套类时出错

Mybatis“;java.lang.IllegalArgumentException:Result Maps集合已包含“的值”;映射嵌套类时出错,java,mybatis,Java,Mybatis,我得到一个java.lang.IllegalArgumentException:Result Maps集合已包含“尝试对嵌套类执行某些XML映射时出错”的值: 我有以下嵌套类结构: package com.test; public class ObjectA { private List<ObjectB> entries; public ObjectA(List<ObjectB> entries) { this.entries = entries

我得到一个java.lang.IllegalArgumentException:Result Maps集合已包含“尝试对嵌套类执行某些XML映射时出错”的值:

我有以下嵌套类结构:

package com.test;   
public class ObjectA {
  private List<ObjectB> entries;

  public ObjectA(List<ObjectB>  entries) {
    this.entries = entries;
  }

  public void setEntries(List<ObjectB> entries) {
    this.entries = entries;
  }

  public List<ObjectB> getEntries() {
    return this.entries;
  }

  public class ObjectB {
    private String param1;

    public ObjectB(String param1) {
        this.param1 = param1;
    }

    public void setParam1(String param1) {
        this.param1 = param1;
    }

    public String getParam1() {
        return this.param1;
    }

  }
}
package.com.test;
公共类对象{
私人名单条目;
公共对象A(列表条目){
this.entries=条目;
}
公共无效集合项(列表项){
this.entries=条目;
}
公共列表getEntries(){
返回此条目;
}
公共类对象B{
私有字符串param1;
公共对象B(字符串参数1){
this.param1=param1;
}
公共void setParam1(字符串param1){
this.param1=param1;
}
公共字符串getParam1(){
返回此参数。1;
}
}
}
xml映射器如下所示:

<resultMap id="ObjectA" type="com.test.ObjectA">
    <collection property="entries" resultMap="Entries"/>
</resultMap>
<resultMap id="Entries" type="com.test.ObjectA.ObjectB">
    <result property="param1" column="column1"/>
</resultMap>

如果我将ObjectB类置于ObjectA类之外,映射工作正常。但问题是我不想这样做。我想将其嵌套


谢谢

我在这里看到两个问题:

  • 内部类的名称与其周围类的分隔符是
    $
    ,而不是
    。因此,路径应该是
    com.test.ObjectA.ObjectB
    ,而不是
    com.test.ObjectA$ObjectB
  • ObjectB没有默认构造函数,也没有指定构造函数映射。除了显式参数外,请记住,内部类始终将其外部类作为隐式构造函数参数,除非您将该类声明为静态(
    公共静态类ObjectB…

  • 我认为您可以为错误添加完整堆栈跟踪。