Java jsonb字段的JPA规范

Java jsonb字段的JPA规范,java,hibernate,jpa,Java,Hibernate,Jpa,我的表(postgres DB)中有一个jsonb列extraInfo,比如: 我想创建一个JPA规范,该规范返回所有行,以便此列中的标记字段大于某个长值。我已经尝试了以下不起作用的方法 public static Specification<Blah> tokenIsBiggerThan(long token) { return (root, query, cb) -> cb.greaterThan(cb.function("jsonb_extrac

我的表(postgres DB)中有一个jsonb列
extraInfo
,比如:

我想创建一个JPA规范,该规范返回所有行,以便此列中的
标记
字段大于某个
值。我已经尝试了以下不起作用的方法

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));
}
公共静态规范令牌大于(长令牌){
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)));
}
公共静态规范令牌大于(长令牌){
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));
}
我认为这是可行的,而且“很好”,但我更愿意将令牌转换为long并进行数字比较

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)));
}