我有一个生成JPA标准的方法:
private CriteriaQuery<ResultSetType> createQuery (ReportFilter reportFilter) {
List<Predicate> criteria = new ArrayList<Predicate>();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<ResultSetType> c = cb.createQuery(ResultSetType.class);
...
c.multiselect(...);
...
return c;
}
现在我想用不同的构造函数表达式(ResultSetType)创建几个查询。
最优雅的解决方案是什么?参数Type始终相同(ReportFilter),但对于不同的构造函数表达式(ResultSetType),我想创建一个不同的选择c.multiselect(...)。
有什么建议吗?
BR,Reen
答案 0 :(得分:0)
private <T> CriteriaQuery<T> genericCriteria(ReportFilter reportFilter, Class<T> clazz) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> c = cb.createQuery(clazz);
....
if (clazz.equals(ResultSetType.class)) {
c.multiselect(...);
} else {
}
...
return c;
}