首页 > 解决方案 > 如何构造条件查询以将指定的字符串与列表匹配

问题描述

 public class MyEntity{
     private Long id;

     @Convert(converter = MyEntity.StringListConverter.class)
     private List<String> names= new ArrayList<>();          
 }

 

数据库中的字段名称为jsonArray格式的字符串,如["Washington","Mosco","London"]。我想检查字段名称中是否有一个名为“alex”的名称。如何构建条件查询?</p>

     CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
       CriteriaQuery<MyEntity> criteriaQuery = 
       criteriaBuilder.createQuery(MyEntity.class);
       Root<MyEntity> root = criteriaQuery.from(MyEntity.class);
       criteriaQuery.select(root);
       Predicate restrictions = criteriaBuilder.conjunction();

       if(null != inName){/*inName is such as "alex" */
        restrictions = criteriaBuilder.and(restrictions ,...);

       }

如何构造“criteriaBuilder.and”的第二个参数?

标签: hibernatecriteriaquery

解决方案


为此,您将需要一个自定义函数。请参阅HQL 的这个答案 - 检查一个数组是否包含一个对您来说应该以相同方式工作的值。


推荐阅读