我正在使用策略模式更新我的GenericDao实现以进行排序/排序。
我过去依赖hibernate API,我想直接用JPA API更新它。
public interface GenericDao<T extends BaseEntity<T, PK>, PK extends Serializable> {
long countAll(MyQuery query);
T create(T newInstance);
T find(PK id);
List<T> findAll();
List<T> find(MyQuery query, SearchStrategy searchStrategy);
T update(T transientObject);
void delete(PK id);
}
我的SearchStrategy界面:
import org.hibernate.Criteria;
public interface SearchStrategy {
void apply(Criteria criteria);
}
如果我们关注SearchStrategy,则标准类型是一个休眠。 我得到了SearchStrategy(OrderingStrategy,PagingStrategy ......)的实现
在thos实现中,我曾经打电话:
criteria.setFirstResult(..);
criteria.setMaxResults(..);
和
criteria.addOrder(Order..);
似乎我不能再使用JPA API的模式了,因为在这个规范中,在CriteriaQuery上进行了排序,在CritdQuery上对TypedQuery进行了分页。
CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(entityClass);
criteriaQuery.orderBy()
TypedQuery typedQuery = entityManager.createQuery(criteriaQuery);
typedQuery.setMaxResults()
您是否看到任何解决方法,或者我是否应该辞职以忘记此案例的策略模式?