我有一個HQL查詢,但它有許多條件。所以我決定使用Hibernate Criteria。使用Hibernate Criteria投影限制選定字段
這裏是我的查詢:
select distinct u.employee.id,u.employee.name,u.employee.address.phone from user u.
我嘗試了用標準Project.property。但它給出了一個錯誤。是否有可能爲這個查詢編寫Hibernate Criteria?
我有一個HQL查詢,但它有許多條件。所以我決定使用Hibernate Criteria。使用Hibernate Criteria投影限制選定字段
這裏是我的查詢:
select distinct u.employee.id,u.employee.name,u.employee.address.phone from user u.
我嘗試了用標準Project.property。但它給出了一個錯誤。是否有可能爲這個查詢編寫Hibernate Criteria?
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"));
這不是我所期望的。我需要知道如何使用字段user.employee.address.phone – rohi
@rohi'.add(Projections.property(「user.employee.address.phone」),「phone」));' –
List<User> users = (List<User>) dbSession.createCriteria(User.class)
.add(Restrictions.eq("nameOfFieldInUserClass", value))
.list();
「nameOfFieldInUserClass」 是在用戶限制欄的名稱,在DB沒有名字列。
和不同,你可以使用
setProjection(Projections.distinct(Projections.property("nameOfField")));
請包括錯誤輸出。順便說一下,是的,這是可能的。 – meskobalazs
@meskobalazs你能解釋一下嗎?我是新的休眠 – rohi
你說它給出了一個錯誤,在哪裏?你也可以告訴我們你的標準查詢嗎? – meskobalazs