hibernate - 如何构造条件查询以将指定的字符串与列表匹配
问题描述
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”的第二个参数?
解决方案
为此,您将需要一个自定义函数。请参阅HQL 的这个答案 - 检查一个数组是否包含一个对您来说应该以相同方式工作的值。
推荐阅读
- c++ - 析构函数异常时返回值的破坏
- microsoft-graph-api - 如何使用 microsoft graph API 在线程中发送消息?
- python - 在固定时间内接受多个输入
- php - 在 Woocommerce 中更改图库缩略图计数和相关产品的数量
- php - 根据另一个字段中的选择将实体加载到字段中 Symfony PRE_SET_DATA 事件监听器
- mysql - 查询以查找给定时间范围内每天的记录数
- activemq - 如何使用activemq通配符发送消息
- regex - 给定字符串的重新排序字符的正则表达式
- php - 如何在 Android 上连接数据库/url
- sql - 按年和月分组并获得一个月的最小值,日期