Criteria API Hibernate

0 respostas
javahibernate
M

Galera estou tentando criar uma pesquisa dinamica usando criteria, mas quando executo tal metódo a clausula where vem com ANDs e não com OR. Gostaria de fazer algo do tipo: where field like parameter OR anotherField like parameter e assim por diante, mas a query só vem com AND. Alguém por favor me da uma luz

public List<T> findByParameter(List<String> elements){	
		Class<?> generic = this.clazz;
		CriteriaBuilder criteriaBuilder = this.manager.getCriteriaBuilder();
		CriteriaQuery<T> query = criteriaBuilder.createQuery(this.clazz);
		Root<T> root = query.from(this.clazz);
		List<Predicate> predicates = new ArrayList<Predicate>();		
		for(String element : elements){
			while (generic != null) {
				for (Field field : generic.getDeclaredFields()) {
					field.setAccessible(true);
					if(field.getType() == String.class){
						predicates.add(criteriaBuilder.like(root.get(field.getName()), "%" + element + "%"));
					}
				}
				generic = generic.getSuperclass();

			}
		}
		query.where((Predicate[])predicates.toArray(new Predicate[0]));
		List<T> resultList = this.manager.createQuery(query).getResultList();
		resultList.stream().forEach(System.out::println);
		return resultList;
	}
Criado 2 de agosto de 2017
Respostas 0
Participantes 1