JPA规范中有一个用于此的API:
CriteriaBuilder.Coalesce
Interface used to build coalesce expressions. A coalesce expression is
equivalent to a case expression that returns null if all its arguments
evaluate to null, and the value of its first non-null argument
otherwise.
从最新的休眠版本开始,建议使用JPQL标准而不是特定于休眠的标准..您最终会得到如下所示:
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(String.class);
Root user= query.from(User.class);
CriteriaBuilder.Coalesce 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 value(T value)
要么
CriteriaBuilder.Coalesce value(Expression extends T> value)
满足您的需求