【问题标题】:Criteria Builder query LIKE in json fieldCriteria Builder 在 json 字段中查询 LIKE
【发布时间】:2019-07-11 19:04:24
【问题描述】:

我正在尝试使用 Criteria Builder(LIKE) 构建查询,以在 JSONARRAY 字段中查找字符串,如下所示:

    [
      {
         "family_class": "Electric",
         "family_name": "lightBulb"
       },
      {
         "family_class": "Others",
         "family_name": "Oil"
       }  
     ]

一个选项是查找 family_name 属性,或者检查它是否包含字符串。

    if (residues != null && residues.length > 0) {


            List<Predicate> predicates = new ArrayList<Predicate>();

            for (String residue : residues) {
                predicates.add(cb.like(root.get("jsonColumn"), residue.toLowerCase()));

            } 


            cr.select(root).where(predicates.toArray(new Predicate[] {}));

            Query<SyncCollectionPoints> q = sess.createQuery(cr);

            List<SyncCollectionPoints> result= q.getResultList();

这是我得到的错误:

Unrecognized token 'oil': was expecting ('true', 'false' or 'null')

我只想返回 jsonColumn 字段中包含该字符串的行。

【问题讨论】:

标签: spring postgresql hibernate criteria-api


【解决方案1】:

我让它像这样工作:

@Formula(value = "lower(jsonColumn::text)")
private String residuesToSearch;

一个简单的演员就可以了

【讨论】:

    猜你喜欢
    • 2017-07-20
    • 2019-04-01
    • 2013-08-03
    • 2020-10-26
    • 2015-01-17
    • 2012-06-13
    • 2021-10-02
    • 2020-06-08
    相关资源
    最近更新 更多