Я пытаюсь создать запрос с помощью 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.