我正在寻找一种JPA方式将查询结果注入Java Bean,如Hibernate' AliasToBeanResultTransformer
:
结果变换器,允许将结果转换为用户指定的类,该类将通过setter方法或与别名相匹配的字段填充。
List resultWithAliasedBean = s.createCriteria(Enrolment.class) .createAlias("student", "st") .createAlias("course", "co") .setProjection( Projections.projectionList() .add( Projections.property("co.description"), "courseDescription" ) ) .setResultTransformer( new AliasToBeanResultTransformer(StudentDTO.class) ) .list(); StudentDTO dto = (StudentDTO)resultWithAliasedBean.get(0);
我发现JPA' CriteriaQuery#multiselect有一个用户定义的类,但它需要一个非默认的构造函数:
- 如果条件查询的类型是某些用户定义的类X的CriteriaQuery(即,通过将X类参数传递给createQuery方法创建的条件查询对象),则multiselect方法的参数将传递给将为每一行返回X构造函数和类型X的实例。
我找到了JPA' CriteriaBuilder#construct,但它还需要一个非默认构造函数:
创建与构造函数对应的选择项。此方法用于指定将应用于查询执行结果的构造函数。
有没有非默认构造函数的另一种方法吗?