2013-12-05 2 views
2

Я столкнулся с проблемой сопоставления нескольких компонентов с Super CSV. Я получил файл csv, содержащий информацию для нескольких bean-компонентов (в строке). Но, как я могу видеть из примеров на веб-сайте, можно только сопоставить каждую строку с одним компонентом (не на два или более бобов).Супер CSV и множественное отображение бинов

Есть ли способ сделать это? Единственный способ, которым я могу думать о создает новый компонент, содержащий все бобы, которые мне нужно, и сделать глубокое отображение, то есть:

class MultiBeanWrapper { 

    Address addreass; 
    BankAccount bankAccount; 

} 

... 
String[] FIELD_MAPPING = new String[] 
    {address.street, bankAccount.bankNumber}; 
... 
beanReader.read(MultiBeanWrapper.class, processors)); 

Я не пробовал это, потому что я хочу быть уверены, что есть нет другого/лучшего способа.

Спасибо за вашу помощь Daniel

ответ

2

Нет, вы не можете прочитать строку в несколько бобов - извините! (Я не уверен, что это будет даже выглядеть - вы получите List<Object> назад?)

У вас есть несколько вариантов:

  1. Добавить отношения между объектами

    Тогда можно используйте сопоставление, например parent.fieldA, parent.child.fieldB. В вашем сценарии Адрес и BankAccount не связаны семантически, так что я бы рекомендовал создание общего родителя (смотрите следующий вариант)

  2. Добавить общий родительский объект

    Затем вы можете использовать отображение как parent.child1.fieldA, parent.child2.fieldB. Это то, что вы предложили, но я бы рекомендовал дать ему лучшее имя, чем Wrapper - он выглядит как клиент для меня!

О, и я рекомендую попробовать вещи, прежде чем разместить вопрос - часто вы ответите на свой вопрос, или быть в состоянии дать более подробную информацию, которая поможет вам лучше ответить!

+0

Спасибо, я попробую ваш второй вариант. – Phillip

 Смежные вопросы

  • Нет связанных вопросов^_^