我有这样的实体:
public class EntityClass{
private String id;
private String name;
private List<OtherEntityClass> others;
}
和这样的bean类:
public class BeanClass{
private String id;
private String name;
private Set<Long> ids;
}
我尝试使用以下标准获得结果(List<BeanClass>
):
Criteria criteria = session.createCriteria(EntityClass.class)
.createAlias("others", "others", JoinType.LEFT_OUTER_JOIN)
.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id") // this is OK
.add(Projections.property("name"), "name") // this is OK
.add(Projections.property("others.id"), "others")) // there is problem
.setResultTransformer(Transformers.aliasToBean(BeanClass.class));
List<BeanClass> result = criteria.list();
问题是(我认为)hibernate如何将元组赋予Tranformer。 在课程AliasToBeanResultTransformer中,我找到了方法:
public Object transformTuple(Object[] tuple, String[] aliases);
Hibernate正在“给”这样的元组行/数组(方法被执行4次):
第一次调用
第二次调用
第3次调用
第4次调用
我希望它“给”那里(只有一次调用):
有人帮我解决?
我被创建了临时解决方法,但它真的很难看。 (My Own Transformer)