Bulldozer de la cartographie pour Hibernate objet de DTO

J'essaie d'utiliser des Bulldozers pour convertir mon domaine entité DTO objets.
Donc, je veux convertir PersistentList, PersistentBag, ... de mon entité de domaine à la liste de tableaux, ... dans mon DTO objets pour éviter les paresseux problème.

Ceci est un exemple de deux de mes entité de domaine :

public class User {
      private Collection<Role> roles;
      ...
}

public class Role {
      private Collection<User> users;
      ...
}

Mon DTO les objets sont les mêmes, sauf que la classe sont des types de DTO. Donc, pour convertir de domaine à la DTO des objets, j'utilise la suite de Nivellement, de la cartographie :

 <configuration>
  <custom-converters>
   <converter type=com.app.mapper.converter.BagConverter">
    <class-a>org.hibernate.collection.PersistentBag</class-a>
    <class-b>java.util.List</class-b>
   </converter>
  </custom-converters>
 </configuration>

 <mapping>
  <class-a>com.app.domain.User</class-a>
  <class-b>com.app.dto.UserDTO</class-b>
 </mapping>

 <mapping>
  <class-a>com.app.domain.Role</class-a>
  <class-b>com.app.dto.RoleDTO</class-b>
 </mapping>

BagConverter est un Bulldozer convertisseur personnalisé et c'est son code :

  public class BagConverter<T> extends DozerConverter<PersistentBag, List>{

 public BagConverter() {
  super(PersistentBag.class, List.class);
 }

 public PersistentBag convertFrom(List source, PersistentBag destination) {
  PersistentBag listDest = null;

  if (source != null) {

   if (destination == null) {
    listDest = new PersistentBag();
   } else {
    listDest = destination;
   }

   listDest.addAll(source);
  }

  return listDest;
 }

 public List convertTo(PersistentBag source, List destination) {
  List listDest = null;

  if (source != null) {

   if (destination == null) {
    listDest = new ArrayList<T>();
   } else {
    listDest = destination;
   }

   if (source.wasInitialized()) {
    listDest.addAll(source);
   }
  }

  return listDest;
 }}

Donc, je reçois un objet Utilisateur qui contient un PersistentBag avec des rôles. J'applique dozer mappeur de la carte sur l'objet pour obtenir UserDTO objet. Le résultat que j'ai obtenu correspond à un UserDTO objet avec une liste de tableaux de Rôle et pas une liste de tableaux de RoleDTO comme je le souhaitais.

Je pense que même si j'ai utilisé convertisseur personnalisé, dozer vous permet de convertir le contenu de ma liste. Ce n'est pas la bonne façon ? Si non, comment faire pour convertir mon domaine entité dto objet en remplaçant persitent collections classiques java collections ?

Merci pour votre aide.

Sylvain.

Utilisé: 'java' au lieu de 'domaine'. J'espère que vous n'avez pas l'esprit, mais je crois qu'il pourrait vous aider à obtenir de meilleures réponses.

OriginalL'auteur sylsau | 2010-05-13