2014-11-11 3 views
0

Я использую JPA 2.1 с Hibernate 4.3.6.Final (MySQL 5.5). В моем запросе JPA CriteriaBuilder мой единственный возвращаемый столбец является выражением, которое в конечном итоге оценивает целое число. Однако, как я могу сообщить JPA о заказе результатов только на основе первого столбца? У меня есть ...Как сообщить JPA CriteriaBuilder для заказа по единственному столбцу возвращаемых данных?

final CriteriaBuilder builder = m_entityManager.getCriteriaBuilder(); 
    final CriteriaQuery<Integer> criteria = builder.createQuery(Integer.class); 
    final Root<User> user = criteria.from(User.class); 
    criteria.where(builder.and(builder.like(user.get(User_.userName), userNamePrefix + "%"), 
           builder.equal(user.get(User_.url), url))); 

    criteria.select(builder.substring(user.get(User_.userName), userNamePrefix.length()).as(Integer.class)); 
    criteria.orderBy(???); 

Что мне помещать в «???», чтобы сообщить JPA о заказе на единственный столбец данных? Я понимаю, что могу получить все столбцы и использовать Java для сортировки, но я хотел бы избежать этого на данный момент.

Спасибо, - Дэйв

ответ

0

Что-то вроде

Expression selectedExpr = builder.substring(user.get(User_.userName); 
criteria.select(selectedExpr, userNamePrefix.length()).as(Integer.class)); 
Order orderExpr = builder.asc(selectedExpr); 
criteria.orderBy(orderExpr); 

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

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