如何使用concat函数在JPA标准中表示空格字符

时间:2019-03-14 21:16:12

标签: java sql hibernate jpa

我正在使用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标准中表示空白或空字符串?

任何帮助将不胜感激。

2 个答案:

答案 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")检索用户的全名。