带有JPA的通用DAO和用于排序/排序的策略模式

时间:2017-08-10 12:50:29

标签: java hibernate jpa dao

我正在使用策略模式更新我的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()

您是否看到任何解决方法,或者我是否应该辞职以忘记此案例的策略模式?

0 个答案:

没有答案