Java 使用Hibernate条件限制选定字段

Java 使用Hibernate条件限制选定字段,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我有一个HQL查询,但它有许多where条件。所以我决定使用Hibernate标准 我的问题是: select distinct u.employee.id,u.employee.name,u.employee.address.phone from user u. 我使用Criteria Project.property尝试了它。但它给出了一个错误。是否可以为此查询编写Hibernate条件 Criteria cr = session.createCriteria(User.class)

我有一个HQL查询,但它有许多where条件。所以我决定使用Hibernate标准

我的问题是:

select distinct u.employee.id,u.employee.name,u.employee.address.phone from user u.
我使用Criteria Project.property尝试了它。但它给出了一个错误。是否可以为此查询编写Hibernate条件

Criteria cr = session.createCriteria(User.class)
    .setProjection(Projections.projectionList()
      .add(Projections.property("employee.id"), "id")
      .add(Projections.property("employee.name"), "Name"));

  List<User> list = cr.list();
//以获取总行数

cr.setProjection(Projections.rowCount());
//求一个属性的平均值

cr.setProjection(Projections.avg("salary"));
cr.setProjection(Projections.countDistinct("firstName"));
cr.setProjection(Projections.max("salary"));
cr.setProjection(Projections.min("salary"));
cr.setProjection(Projections.sum("salary"));
//获取属性的不同计数

cr.setProjection(Projections.avg("salary"));
cr.setProjection(Projections.countDistinct("firstName"));
cr.setProjection(Projections.max("salary"));
cr.setProjection(Projections.min("salary"));
cr.setProjection(Projections.sum("salary"));
//最大限度地利用一个属性

cr.setProjection(Projections.avg("salary"));
cr.setProjection(Projections.countDistinct("firstName"));
cr.setProjection(Projections.max("salary"));
cr.setProjection(Projections.min("salary"));
cr.setProjection(Projections.sum("salary"));
//获取一个属性的最小值

cr.setProjection(Projections.avg("salary"));
cr.setProjection(Projections.countDistinct("firstName"));
cr.setProjection(Projections.max("salary"));
cr.setProjection(Projections.min("salary"));
cr.setProjection(Projections.sum("salary"));
//求一个属性的和

cr.setProjection(Projections.avg("salary"));
cr.setProjection(Projections.countDistinct("firstName"));
cr.setProjection(Projections.max("salary"));
cr.setProjection(Projections.min("salary"));
cr.setProjection(Projections.sum("salary"));

请包括错误输出。顺便说一句,是的,这是可能的。@meskobalazs你能解释一下怎么做吗?我是新来的Hibernate你说它出错了,在哪里?您还可以向我们展示您的条件查询吗?您可以添加您的数据集类(带有字段的类:id、name…)的代码吗?要创建HQL,您需要知道此类中字段的名称。这不是我所期望的。我需要知道如何使用user.employee.address等字段。phone@rohi
.add(Projections.property(“user.employee.address.phone”),“phone”)