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ł?