Utwórz kryteria JPA w pełni dynamicznie

Zazwyczaj jestem użytkownikiem Hibernate i do mojego nowego projektu używamy JPA 2.0.

Mój DAO otrzymuje kontener z ogólnym.

<code>public class Container<T> {
  private String fieldId;    // example "id"
  private T value;           // example new Long(100) T is a Long
  private String operation;  // example ">"

  // getter/setter
}
</code>

Następujące linie nie zostaną skompilowane:

<code>if (">".equals(container.getOperation()) {
  criteriaBuilder.greaterThan(root.get(container.getFieldId()), container.getValue());
}
</code>

Ponieważ muszę określić ten typ:

<code>if (">".equals(container.getOperation()) {
  criteriaBuilder.greaterThan(root.<Long>get(container.getFieldId()), (Long)container.getValue());
}
</code>

Ale nie chcę tego robić! Ponieważ używam rodzajowego w moim pojemniku! Masz pomysł?

questionAnswers(1)

yourAnswerToTheQuestion