miércoles, 20 de marzo de 2013

Clase que transforma a Objetos Hibernate a DTO

Importante tanto las proyecciones, HQL o SQLQueries deben de llevan como alias el campo del dto precedido por una z, ya que hibernate no soporta los mismos alias. Tomado de https://hibernate.atlassian.net/browse/HHH-5063.
Ejemplo:
query.setResultTransformer(new ResultTransformerUtil(DTO.class)).list();
import org.hibernate.transform.AliasToBeanResultTransformer;

public class ResultTransformerUtil extends AliasToBeanResultTransformer{

 private static final long serialVersionUID = -63993253786054062L;

 public ResultTransformerUtil(Class<?> resultClass) {
        super(resultClass);
    }

    @Override
    public Object transformTuple(Object[] tuple, String[] aliases) {
        String[] cleanedUpAliases = new String[aliases.length];
        for (int i = 0; i < aliases.length; i++){
            cleanedUpAliases[i] = aliases[i].replaceFirst("z", "");
        }
        return super.transformTuple(tuple, cleanedUpAliases);
    }
}

No hay comentarios:

Publicar un comentario