英文:
Object List of Array mapping to List of Pojo
问题
// Input Object Array returned by below code
List<Object[]> resultObj = query.getResultList();
// Need to map resultObj to List<ObjectType> as shown below
class ObjectType {
// maps to Object[0]
private Integer x;
// maps to Object[1]
private String y;
// maps to Object[2]
private String z;
}
由于Object[]
包含超过18个元素,我尝试使用Dozer来避免手动映射每个索引到POJO字段。
<mapping>
<class-a>java.lang.Object[]</class-a>
<class-b>com.ObjectType</class-b>
<field>
<a>this[0]</a>
<b>x</b>
</field>
<field>
<a>this[1]</a>
<b>y</b>
</field>
<field>
<a>this[2]</a>
<b>z</b>
</field>
</mapping>
根据我尝试的答案 https://stackoverflow.com/a/26556413/350705,但映射后的对象具有以下值 - 所有字段的相同值和值作为地址空间。
"x": "[Ljava.lang.Object;@2d716a1c",
"y": "[Ljava.lang.Object;@2d716a1c",
"z": "[Ljava.lang.Object;@2d716a1c"
请建议是否有其他可配置的方法来处理这种情况。
英文:
I have a JDBC Result set as List<Object[]>
& need to convert it to List<ObjectType>
in Spring boot.
// Input Object Array returned by below code
List<Object[]> resultObj = query.getResultList();
// Ex
resultObj[0][0] = new Integer(10);
resultObj[0][1] = "Test";
resultObj[0][2] = "Hello";
// Need map resultObj to List<ObjectType> below type
class ObjectType {
//maps to Object[0]
private Integer x;
//maps to Object[1]
private String y;
//maps to Object[2]
private String z;
}
Since object[] has over 18 elements, instead of mapping manually each index to field of POJO, i tried using Dozer.
<mapping>
<class-a>java.lang.Object[]</class-a>
<class-b>com.ObjectType</class-b>
<field>
<a>this[0]</a>
<b>x</b>
</field>
<field>
<a>this[1]</a>
<b>y</b>
</field>
</mapping>
I tried following this answer https://stackoverflow.com/a/26556413/350705, but output mapped object has below value - same value for all fields & address space as value
"x": "[Ljava.lang.Object;@2d716a1c",
"y": "[Ljava.lang.Object;@2d716a1c",
"z": "[Ljava.lang.Object;@2d716a1c",
Please suggest if there is any other configurable approach for this.
答案1
得分: 0
尝试一下以下可能有帮助的内容。有关解释,请参阅此链接 https://sourceforge.net/p/dozer/discussion/452530/thread/012023da/
<mapping>
<class-a>java.lang.Object[]</class-a>
<class-b>com.ObjectType</class-b>
<field>
<a>this</a>
<b set-method="add(java.lang.Object)" type="iterate">anything</b>
<b-hint>your destination object type</b-hint>
</field>
</mapping>
英文:
Try something below that might help. For explanation please refer this link https://sourceforge.net/p/dozer/discussion/452530/thread/012023da/
<mapping>
<class-a>java.lang.Object[]</class-a>
<class-b>com.ObjectType</class-b>
<field>
<a>this</a>
<b set-method="add(java.lang.Object)" type="iterate">anything</b>
<b-hint>your destination object type</b-hint>
</field>
</mapping>
专注分享java语言的经验与见解,让所有开发者获益!
评论