通常、私はHibernateユーザーであり、新しいプロジェクトではJPA2.0を使用します。
私のDAOは、ジェネリックのコンテナーを受け取ります。
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
}
次の行はコンパイルされません。
if (">".equals(container.getOperation()) {
criteriaBuilder.greaterThan(root.get(container.getFieldId()), container.getValue());
}
次のようにタイプを指定する必要があるためです。
if (">".equals(container.getOperation()) {
criteriaBuilder.greaterThan(root.<Long>get(container.getFieldId()), (Long)container.getValue());
}
しかし、私はそれをしたくありません!コンテナでジェネリックを使用しているからです!アイデアはありますか?