我可以知道如何将以下 MySQL SQL 转换为 JPA 查询吗?
SELECT * FROM ORDER
WHERE LPAD(BATCH, 2, ' ') < LPAD('X', 2, ' ') ;
我想不通的是 JPA 中的 LPAD() 字符串函数。
你有什么主意吗?
我可以知道如何将以下 MySQL SQL 转换为 JPA 查询吗?
SELECT * FROM ORDER
WHERE LPAD(BATCH, 2, ' ') < LPAD('X', 2, ' ') ;
我想不通的是 JPA 中的 LPAD() 字符串函数。
你有什么主意吗?
我知道这是一篇很老的帖子,但是当一些同事在构建 JPA 查询如何做同样的事情时,我总是会受到质疑。几乎从来没有你会找到一个完美的拟合函数来做你想做的事。但是,使用一些逻辑,您可以在完整的 JPA 中获得相同的结果。
LPAD 的一个例子。
Expression<String> numberWithZeroLeft = builder.concat("0000", root.get("myNumber")); //Return something like 000012
Expression<Integer> expressionLength = builder.length(numberWithZeroLeft);
Expression<String> numberLpad = builder.substring(numberWithZeroLeft, e.builder.sum(expressionLength, -3), e.builder.literal(4)); //Return something like 0012
query.select(numberLpad);
想一想:
I have a string X, and need a string formatted in 4 zeros.
So we will get 0000 + X => "0000X"
And now just get the 4 last characters using substring.
我希望对某人有所帮助。
干杯。=]
在 EclipseLink 2.1 中有一个函数 FUNC 用于调用数据库特定的函数,例如:
FUNC('LPAD', BATCH, 2, ' ') < FUNC('LPAD', 'X', 2, ' ')
从 EclipseLink 2.4 和 JPA 2.1 开始,有具有相同功能的 FUNCTION 运算符