我正在使用JPA标准与GROUP BY一起使用,并且遇到concat函数的问题。
我想用jpa表示一个SQL concat函数,如下所示。
concat(firstName,' ',lastName);
我使用jpa条件构建器对此进行了尝试,如下所示。
cb.function("CONCAT",String.class,root.get("firstName"),cb.literal(" "),root.get("lastName"));
但是这种方法效果不好。所以我想知道如何在JPA标准中表示空白或空字符串?
任何帮助将不胜感激。
答案 0 :(得分:0)
标准concat()中存在缺陷
Expression<String> e = cb.concat(root.get("firstName"), " ");
e = cb.concat(e , root.get("lastName"));
答案 1 :(得分:0)
我自己找到了解决方案。
我们可以为此使用休眠@Formula
。
为此,我们将不得不引入一个新的虚拟字段,并在选择中使用相同的映射,如下所示。
public class UserEntity {
// other mappings for id,username,firstName,lastName here
@Formula("nullif(concat(firstname,' ',lastname),' ')") // firstname and lastname are column names
private String fullName;
}
然后使用root.get("fullName")
检索用户的全名。