尝试在嵌套类上执行某些 XML 映射时,我收到 java.lang.IllegalArgumentException: Result Maps 集合已包含 value for"错误:
我有以下嵌套类结构:
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;
}
}
}
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 没有默认构造函数,并且您没有指定构造函数映射。除了显式参数之外,请记住,内部类始终将其外部类作为隐式构造函数参数,除非您将该类声明为静态(
public static class ObjectB...
)。
关于java - Mybatis映射嵌套类时出现 "java.lang.IllegalArgumentException: Result Maps collection already contains value for"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051240/