hibernate投影不会只获得所需的列

hibernate投影不会只获得所需的列,hibernate,Hibernate,我试图使用投影从表中只获取一列(countColumn)。但不知何故,它会返回完整的数据库行(表示表中唯一记录的所有列)。请帮我确定解决方案。提前谢谢 代码: 不能选择一个实体,也不能将字段投影回同一实体对象。您需要使用一个非实体DTO,它有一个接受投影值的构造函数 移除结果转换器: criteria.setResultTransformer(Transformers.aliasToBean(DomainObject.class)); 然后简单地提取如下所示的预测值: List results

我试图使用投影从表中只获取一列(countColumn)。但不知何故,它会返回完整的数据库行(表示表中唯一记录的所有列)。请帮我确定解决方案。提前谢谢

代码:


不能选择一个实体,也不能将字段投影回同一实体对象。您需要使用一个非实体DTO,它有一个接受投影值的构造函数

移除结果转换器:

criteria.setResultTransformer(Transformers.aliasToBean(DomainObject.class));
然后简单地提取如下所示的预测值:

List results = criteria.list();
for(Object result : results) {
    Object[] data = (Object[]) result;
    Number countColumn = data[0];
    ...
}

为什么要混合使用criteria API和查询API?@AVolpe您的意思是我应该只使用“criteria criteria=session.createCriteria(DomainObject.class,“domainObj”);ProjectionList proList=Projections.ProjectionList();proList.add(Projections.property(“objShortName.countColumn”);criteria.setProjection(ProjectionList);”并使用语句条件获取结果。list()??它是否自动启动表上的select查询并获取列表?谢谢您的回复。是的,但是您有一个标准,并且没有得到代码的结果,您没有混合使用这两种方法,只需使用一种,
select o.countColumn from DomainObj o其中o.field1=:field1
List results = criteria.list();
for(Object result : results) {
    Object[] data = (Object[]) result;
    Number countColumn = data[0];
    ...
}