JPACrud.createCriteriaByExample does not work as expected

Descrição

No demoiselle 2.3.1, a classe JPACrud implementa o seguinte método:

private CriteriaQuery<T> createCriteriaByExample(final T example) {
final CriteriaBuilder builder = getCriteriaBuilder();
final CriteriaQuery<T> query = builder.createQuery(getBeanClass());
final Root<T> entity = query.from(getBeanClass());

final List<Predicate> predicates = new ArrayList<Predicate>();
final Field[] fields = example.getClass().getDeclaredFields();

for (Field field : fields) {
if (!field.isAnnotationPresent(Column.class) && !field.isAnnotationPresent(Basic.class)
&& !field.isAnnotationPresent(Enumerated.class)) {
continue;
}

Object value = null;

try {
field.setAccessible(true);
value = field.get(example);

} catch (IllegalArgumentException e) {
continue;

} catch (IllegalAccessException e) {
continue;

}

if (value == null) {
continue;
}

final Predicate pred = builder.equal(entity.get(field.getName()), value);
predicates.add(pred);
}

return query.where(predicates.toArray(new Predicate[0])).select(entity);
}

No trecho marcado em vermelho, poderia ser incluída a anotação JoinColumn.

Status

Responsável

Julian Cesar

Criador

Cássio Luís Maia Bastos

Etiquetas

Git Pull Request

None

Prioridade

Minor
Configure