我是否知道如何将以下MySQL SQL转换为JPA查询?
SELECT * FROM ORDER
WHERE LPAD(BATCH, 2, ' ') < LPAD('X', 2, ' ') ;
我无法弄清楚的是JPA中的LPAD()字符串函数。
你有什么想法吗?
答案 0 :(得分:0)
在EclipseLink 2.1中,有一个函数FUNC用于调用数据库特定的函数,例如:
FUNC('LPAD', BATCH, 2, ' ') < FUNC('LPAD', 'X', 2, ' ')
从EclipseLink 2.4和JPA 2.1中,FUNCTION运算符具有相同的功能
答案 1 :(得分:0)
我知道那是一个很老的帖子,但是当一些同事在构建如何执行相同操作的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.
我希望能帮助别人。
干杯。 =]