protected Criteria getCriteria(Session s) throws Exception { return s.createCriteria( Student.class, "s" ) .setProjection( Projections.projectionList() .add( Projections.sqlProjection( "555 as studentNumber", new String[]{ "studentNumber" }, new Type[] { StandardBasicTypes.LONG } ) ) .add( Property.forName( "s.name" ).as( "name" ) ) ) .addOrder( Order.asc( "s.studentNumber" ) ) .setResultTransformer( new AliasToBeanConstructorResultTransformer( getConstructor() ) ); } private Constructor getConstructor() throws NoSuchMethodException {
protected Criteria getCriteria(Session s) { return s.createCriteria( Enrolment.class, "e" ) .createAlias( "e.student", "st" ) .createAlias( "e.course", "co" ) .setProjection( Projections.projectionList() .add( Property.forName( "st.name" ).as( "studentName" ) ) .add( Projections.sqlProjection( "'lame description' as courseDescription", new String[] { "courseDescription" }, new Type[] { StandardBasicTypes.STRING } ) ) ) .addOrder( Order.asc( "e.studentNumber" ) ) .setResultTransformer( Transformers.aliasToBean( StudentDTO.class ) ); } };
/** * Adds a sql projection to the criteria * * @param sql SQL projecting * @param columnAliases List of column aliases for the projected values * @param types List of types for the projected values */ protected void sqlProjection(String sql, List<String> columnAliases, List<Type> types) { projectionList.add(Projections.sqlProjection(sql, columnAliases.toArray(new String[columnAliases.size()]), types.toArray(new Type[types.size()]))); }
/** * Adds a sql projection to the criteria * * @param sql SQL projecting * @param columnAliases List of column aliases for the projected values * @param types List of types for the projected values */ protected void sqlProjection(String sql, List<String> columnAliases, List<Type> types) { projectionList.add(Projections.sqlProjection(sql, columnAliases.toArray(new String[columnAliases.size()]), types.toArray(new Type[types.size()]))); }
sqlBuilder.append(" where ").append(searchFrom.id()).append('=').append("this_.").append(searchFrom.localId()).append(") as ").append(alias); projectionList.add(Projections.alias(Projections.sqlProjection(sqlBuilder.toString(), new String[]{alias}, new Type[]{new StringType()}), alias)); if (searchFrom.localId().isEmpty()) {