簡體   English   中英

使用休眠標准投影限制所選字段

[英]Restrict selected fields using Hibernate Criteria projection

我有一個HQL查詢,但是它有許多條件。 因此,我決定使用休眠標准。

這是我的查詢:

select distinct u.employee.id,u.employee.name,u.employee.address.phone from user u.

我使用Criteria Project.property進行了嘗試。 但它給出了一個錯誤。 是否可以為此查詢編寫休眠條件?

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();

幾個例子。

Criteria cr = session.createCriteria(Employee.class);

//獲取總行數。

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"));
List<User> users = (List<User>) dbSession.createCriteria(User.class)
          .add(Restrictions.eq("nameOfFieldInUserClass", value))                
          .list();

“ nameOfFieldInUserClass”是User中限制字段的名稱而不是DB中列的名稱

對於不同的可以使用

setProjection(Projections.distinct(Projections.property("nameOfField")));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM