最后,找到解决方案并不难,
我刚刚创建了自己的(自定义)ResultTransformer,并在setResultTransformer方法中进行了指定:
private Query createHibernateQueryForUnmappedTypeFactDto(String sqlQuery) throws HibernateException { return FactCodeQueries.addScalars(createSQLQuery(sqlQuery)).setResultTransformer(new FactCodeDtoResultTransformer()); //return FactCodeQueries.addScalars(createSQLQuery(sqlQuery)).setResultTransformer(Transformers.aliasToBean(FactCodeDto.class));}自定义结果转换器的代码:
package org.bamboomy.cjr.dao.factpre;import org.bamboomy.cjr.dto.FactCodeDto;import java.util.Date;import java.util.List;public class FactCodeDtoResultTransformer implements org.hibernate.transform.ResultTransformer { @Override public Object transformTuple(Object[] objects, String[] strings) { FactCodeDto result = new FactCodeDto(); for (int i = 0; i < objects.length; i++) { setField(result, strings[i], objects[i]); } return result; } private void setField(FactCodeDto result, String string, Object object) { if (string.equalsIgnoreCase("cdFact")) { result.setCdFact((String) object); } else if (string.equalsIgnoreCase("cdFactSuffix")) { result.setCdFactSuffix((String) object); } else if (string.equalsIgnoreCase("isSupplementCode")) { result.setIsSupplementCode((Boolean) object); } else if (string.equalsIgnoreCase("isTitleCode")) { result.setIsTitleCode((Boolean) object); } else if (string.equalsIgnoreCase("mustBeFollowed")) { result.setMustBeFollowed((Boolean) object); } else if (string.equalsIgnoreCase("activeFrom")) { result.setActiveFrom((Date) object); } else if (string.equalsIgnoreCase("activeTo")) { result.setActiveTo((Date) object); } else if (string.equalsIgnoreCase("descFr")) { result.setDescFr((String) object); } else if (string.equalsIgnoreCase("descNl")) { result.setDescNl((String) object); } else if (string.equalsIgnoreCase("descDe")) { result.setDescDe((String) object); } else if (string.equalsIgnoreCase("type")) { result.setType((String) object); } else if (string.equalsIgnoreCase("idFact")) { result.setIdFact((Long) object); } else if (string.equalsIgnoreCase("idParent")) { result.setIdParent((Long) object); } else if (string.equalsIgnoreCase("isCode")) { result.setIsCode((Boolean) object); } else { throw new RuntimeException("unknown field"); } } @Override public List transformList(List list) { return list; }}在hibernate3中,您可以将Aliasses设置为查询,但是在hibernate5中不能再执行此操作(如果我错了,请纠正我),因此aliasToBean是您只能在实际使用别名时使用的东西;我没有,所以例外。



