对象数组列表映射到POJO列表

huangapple 未分类评论52阅读模式
英文:

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&lt;Object[]&gt; & need to convert it to List&lt;ObjectType&gt; in Spring boot.

// Input Object Array returned by below code
List&lt;Object[]&gt; resultObj = query.getResultList();
// Ex
resultObj[0][0] = new Integer(10);
resultObj[0][1] = &quot;Test&quot;;
resultObj[0][2] = &quot;Hello&quot;;

// Need map resultObj to List&lt;ObjectType&gt; 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.

&lt;mapping&gt;
	    &lt;class-a&gt;java.lang.Object[]&lt;/class-a&gt;
	    &lt;class-b&gt;com.ObjectType&lt;/class-b&gt;
	    &lt;field&gt;
	        &lt;a&gt;this[0]&lt;/a&gt;
	        &lt;b&gt;x&lt;/b&gt;
	    &lt;/field&gt;
	    &lt;field&gt;
	        &lt;a&gt;this[1]&lt;/a&gt;
	        &lt;b&gt;y&lt;/b&gt;
	    &lt;/field&gt;
&lt;/mapping&gt;

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

&quot;x&quot;: &quot;[Ljava.lang.Object;@2d716a1c&quot;,
&quot;y&quot;: &quot;[Ljava.lang.Object;@2d716a1c&quot;,
&quot;z&quot;: &quot;[Ljava.lang.Object;@2d716a1c&quot;,

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/

&lt;mapping&gt;
    &lt;class-a&gt;java.lang.Object[]&lt;/class-a&gt;
    &lt;class-b&gt;com.ObjectType&lt;/class-b&gt;
    &lt;field&gt;
        &lt;a&gt;this&lt;/a&gt;
        &lt;b set-method=&quot;add(java.lang.Object)&quot; type=&quot;iterate&quot;&gt;anything&lt;/b&gt;
        &lt;b-hint&gt;your destination object type&lt;/b-hint&gt;
    &lt;/field&gt;

</mapping>

huangapple
  • 本文由 发表于 2020年5月5日 17:27:35
  • 转载请务必保留本文链接:https://java.coder-hub.com/61609878.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定