2008-09-12 8 views
33

Я пытаюсь получить только список id объекта bob, например, вместо списка bob. Это нормально с запросом HQL, но я бы знал, можно ли использовать критерии?Как использовать критерии спящего режима, чтобы возвращать только один элемент объекта, а не весь объект?

Пример:

final StringBuilder hql = new StringBuilder(); 
hql.append("select bob.id from ") 
    .append(bob.class.getName()).append(" bob ") 
    .append("where bob.id > 10"); 

final Query query = session.createQuery(hql.toString()); 
return query.list(); 

ответ

45

Я думаю, что вы могли бы сделать это с проекциях, что-то вроде

Criteria.forClass(bob.class.getName()) 
     .add(Restrictions.gt("id", 10)) 
     .setProjection(Projections.property("id")) 
     ); 
16

Аналогичным образом вы также можете:

Criteria criteria = session.createCriteria(bob.class); 

criteria.add(Expression.gt("id", 10)); 

criteria.setProjection(Projections.property("id")); 

criteria.addOrder(Order.asc("id")); 

return criteria.list(); 
1

Другой вариант (хотя немного ип гибернации-эск) является использование "сырого" SQL, как это:

List<Long> myList = session.createSQLQuery("select single_column from table_name") 
      .addScalar("single_column", StandardBasicTypes.LONG).list(); 
-1

Вы можете сделать это, как этот

bob bb=null; 

    Criteria criteria = session.createCriteria(bob.class); 
    criteria.add(Restrictions.eq("id",id)); 

    bb = (bob) criteria.uniqueResult(); 

как ограничения вы можете добавить свое условие

+1

Не ответ на вопрос, но это было мне удобно – 2018-02-13 23:31:48

 Смежные вопросы

  • Нет связанных вопросов^_^