2017-02-06 5 views

ответ

2

Существует АНИ для этого в спецификации JPA: CriteriaBuilder.Coalesce

Интерфейс, используемый для построения Coalesce выражений. Выражение coalesce равно , эквивалентное выражению case, которое возвращает null, если все его аргументы оценивают значение null, а значение его первого ненулевого аргумента в противном случае.

В новейших версиях Hibernate, рекомендуется использовать критерии JPQL вместо Hibernate специфические .. вы бы в конечном итоге с чем-то вроде этого:

CriteriaBuilder builder = em.getCriteriaBuilder(); 
CriteriaQuery<String> query = cb.createQuery(String.class); 
Root<User> user= query.from(User.class); 

CriteriaBuilder.Coalesce<String> coalesceExp = builder.coalesce(); 
coalesceExp.value(user.get("name")); 
coalesceExp.value(user.get("surname")); 
coalesceExp.value(user.get("middlename")); 
query.select(coalesceExp); 

Query q = em.createQuery(query); 

Суть заключается в том, что вы использовать метод

CriteriaBuilder.Coalesce<T> value(T value) 

или

CriteriaBuilder.Coalesce<T> value(Expression<? extends T> value) 

, чтобы заполнить ваше выражение coalesc в соответствии с вашими потребностями

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