Список объектов сопоставления массива со списком Pojo - PullRequest
1 голос
/ 05 мая 2020

У меня JDB C Результат установлен как List<Object[]> и нужно преобразовать его в List<ObjectType> при загрузке Spring.

// 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;
}

Поскольку объект [] имеет более 18 элементов, вместо сопоставления вручную каждый индекс в поле POJO, я пробовал использовать 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>

Я пробовал следовать этому ответу { ссылка }, но отображаемый объект вывода имеет значение ниже - такое же значение для всех полей и адресного пространства как значение

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

Пожалуйста, предложите, есть ли какой-либо другой настраиваемый подход для этого.

1 Ответ

0 голосов
/ 05 мая 2020

Попробуйте что-нибудь ниже, что может помочь. Для объяснения перейдите по этой ссылке 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>

...