2013-08-14 2 views
0

В моей архитектуре, в моем DAO слое, я хочу, чтобы преобразовать Entity (javax.persistence.Entity) к Pure примеру Entity.for вообразите меня Entity Как это:Data Transfer Object

@Entity 
    public class DAOImp(){ 

    @Id 
    private int id; 
    . 
    . 
    .//getter and setter 
    } 

передача этого класса:

public class DAOData{ 
private int id; 
. 
. 
.//getter and setter 
} 

проблемы, когда это больше появляться этим отображение поля в моих DAOImpl класса.Чтоба emample представить себе один из моих поданных в классе DAOImp является:

@OneToMany(mappedBy="kc5tnx") 
    private List<Kc5add> kc5adds; 

Я не знаю, как я могу справиться с этой проблемой. Я не знаю, как я могу перенести этот объект в DAOData. Не могли бы вы рассказать, как я могу исправить эту проблему?

+0

[** JPA/EJB3 УБИЛ DAO **] (http://www.adam-bien.com/roller/abien/entry/jpa_ejb3_killed_the_dao) –

ответ

1

Вы должны реализует свой класс с сериализуемой

public class DAOData implements Serializable 
{ 
private int id; 
. 
. 
.//getter and setter 
} 
0

Вам нужно создать преобразователь для передачи Вам данных между объектом (DAOImp) и объектом данных передачи (DAOData) и вручную передавать данные только POJO в DTO.

, например:

public class DaoConverter { 

    public static DaoData convertToDTO(DaoImpl daoImpl) { 
    DaoData daoDataDTO = new DaoData(); 
    daoDataDTO.setId(daoImpl.getId()); 
    ... 
    return daoDataDTO; 
    } 

} 
+0

да ,, , я знаю это правило. но я не знаю, как я могу написать и преобразовать «Mapping Field». Адрес эл. Почты: @OneToMany (mappedBy = "kc5tnx") частный Список kc5adds; Поле в классе «DAOData»? – Ritz

+0

Он должен быть личным. Список kc5adds; Можете ли вы написать свое исключение? Имеет ли Kc5add объект объекта? Возможно, Kc5add является прокси-объектом. Или, может быть, вам нужно разобрать все объекты в списке и сначала отделить его: 'for (Kc5add kc5add: Kc5addList) { kc5add = entityManager.detach (kc5add); DAOData.getkc5addList(). Add (kc5add); } ' – kelheor