From: <hib...@li...> - 2006-03-16 14:26:52
|
Author: max...@jb... Date: 2006-03-16 09:26:38 -0500 (Thu, 16 Mar 2006) New Revision: 9637 Added: trunk/Hibernate3/src/org/hibernate/transform/AliasToBeanConstructorResultTransformer.java trunk/Hibernate3/src/org/hibernate/transform/ToListResultTransformer.java trunk/Hibernate3/src/org/hibernate/transform/Transformers.java Log: HHH-38 Add setResultClass or similar to Criteria and HQL HHH-332 Add ResultTransformer support for HQL HHH-587 Add ResultTransformer for all query methods (HQL, Criteria & SQL) Added: trunk/Hibernate3/src/org/hibernate/transform/AliasToBeanConstructorResultTransformer.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/transform/AliasToBeanConstructorResultTransformer.java 2006-03-16 14:14:48 UTC (rev 9636) +++ trunk/Hibernate3/src/org/hibernate/transform/AliasToBeanConstructorResultTransformer.java 2006-03-16 14:26:38 UTC (rev 9637) @@ -0,0 +1,33 @@ +package org.hibernate.transform; + +import java.lang.reflect.Constructor; +import java.util.List; + +import org.hibernate.QueryException; + +public class AliasToBeanConstructorResultTransformer implements ResultTransformer { + + private Constructor constructor; + + public AliasToBeanConstructorResultTransformer(Constructor constructor) { + this.constructor = constructor; + } + + public Object transformTuple(Object[] tuple, String[] aliases) { + try { + return constructor.newInstance( tuple ); + } + catch ( Exception e ) { + throw new QueryException( + "could not instantiate: " + + constructor.getDeclaringClass().getName(), + e ); + } + } + + public List transformList(List collection) { + return collection; + } + + +} Added: trunk/Hibernate3/src/org/hibernate/transform/ToListResultTransformer.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/transform/ToListResultTransformer.java 2006-03-16 14:14:48 UTC (rev 9636) +++ trunk/Hibernate3/src/org/hibernate/transform/ToListResultTransformer.java 2006-03-16 14:26:38 UTC (rev 9637) @@ -0,0 +1,20 @@ +package org.hibernate.transform; + +import java.util.Arrays; +import java.util.List; + +public class ToListResultTransformer implements ResultTransformer { + + public static final ResultTransformer INSTANCE = new ToListResultTransformer(); + + private ToListResultTransformer() {} + + public Object transformTuple(Object[] tuple, String[] aliases) { + return Arrays.asList(tuple); + } + + public List transformList(List collection) { + return collection; + } + +} Added: trunk/Hibernate3/src/org/hibernate/transform/Transformers.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/transform/Transformers.java 2006-03-16 14:14:48 UTC (rev 9636) +++ trunk/Hibernate3/src/org/hibernate/transform/Transformers.java 2006-03-16 14:26:38 UTC (rev 9637) @@ -0,0 +1,25 @@ +package org.hibernate.transform; + +final public class Transformers { + + private Transformers() {} + + /** + * Each row of results is a <tt>Map</tt> from alias to values/entities + */ + public static final ResultTransformer ALIAS_TO_ENTITY_MAP = new AliasToEntityMapResultTransformer(); + + /** + * Each row of results is a <tt>List</tt> + */ + public static final ResultTransformer TO_LIST = ToListResultTransformer.INSTANCE; + + /** + * Creates a resulttransformer that will inject aliased values into + * instances of Class via property methods or fields. + */ + public static ResultTransformer aliasToBean(Class target) { + return new AliasToBeanResultTransformer(target); + } + +} |