【发布时间】:2021-09-07 02:57:46
【问题描述】:
public class MyEntity{
private Long id;
@Convert(converter = MyEntity.StringListConverter.class)
private List<String> names= new ArrayList<>();
}
数据库中names字段为jsonArray格式的字符串,如["Washington","Mosco","London"]。 我想检查一个名为“alex”的名字是否在 names 字段中。如何构建条件查询?
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”的第二个参数?
【问题讨论】:
-
你的意思是要检查
MyEntity的某列的值是否包含在names列表中? -
我想检查一个值作为查询条件是否包含在名称列表中。例如,名称为 ["abc","def"] 的 MyEntity 记录将满足查询以查找名称字段中包含 "abc" 的记录。