我需要使用条件构建器搜索文本(如果存在)。 如果这个文本存在于任何一列中,我需要检索数据。
示例数据:
CriteriaBuilder builder = manager.getCriteriaBuilder();
CriteriaQuery<Event> criteriaQuery = builder.createQuery(Event.class);
Root<Event> root = criteriaQuery.from(Event.class);
ArrayList<Predicate> conditions = new ArrayList<>();
conditions.add(builder.equal(root.get(Event_.eventId), searchText));
conditions.add(builder.equal(root.get(Event_.eventModule), searchText));
conditions.add(builder.equal(root.get(Event_.eventName), searchText));
criteriaQuery.select(root).where(builder.or(conditions.toArray(new Predicate[conditions.size()])));
javax.persistence.Query query = manager.createQuery(criteriaQuery);
List<Event> eventList = query.getResultList();
return eventList;
现在我正在使用OR clause
检查数据是否存在数据。
我是否可以知道如何使用 IN子句
答案 0 :(得分:0)
您不需要OR
条件:
CriteriaBuilder builder = manager.getCriteriaBuilder();
CriteriaQuery<Event> criteriaQuery = builder.createQuery(Event.class);
Root<Event> root = criteriaQuery.from(Event.class);
ArrayList<Predicate> conditions = new ArrayList<>();
conditions.add(builder.equal(root.get(Event_.eventId), searchText));
conditions.add(builder.equal(root.get(Event_.eventModule), searchText));
conditions.add(builder.equal(root.get(Event_.eventName), searchText));
//CHANGE THIS ROW
criteriaQuery.select(root).where(conditions.toArray(new Predicate[conditions.size()])));
javax.persistence.Query query = manager.createQuery(criteriaQuery);
List<Event> eventList = query.getResultList();
return eventList;