Java jsonb字段的JPA规范
我的表(postgres DB)中有一个jsonb列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
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)));
}