我的表(postgres DB)中有一个jsonb列extraInfo
,说:
{"token": "11235813"}
我想创建一个JPA规范,该规范返回所有行,以使此列中的token
字段大于某个特定的long
值。我尝试了以下无效的方法。
public static Specification<Blah> tokenIsBiggerThan(long token) {
return (root, query, cb) -> cb.greaterThan(cb.function("jsonb_extract_path_text", Long.class, root.get("extraInfo"), cb.literal("token")), cb.literal(token));
}
只是想找到正确的咒语,有什么主意吗?
编辑:事实证明我可以进行字符串比较:
public static Specification<Blah> tokenIsBiggerThan(long token) {
return (root, query, cb) -> cb.greaterThan(cb.function("jsonb_extract_path_text", String.class, root.get("extraInfo"), cb.literal("token")), cb.literal(String.valueOf(token)));
}
我想这是可行的并且是'fine',但是宁愿将token转换为long并进行数字比较。