我正在考虑将Hibernate标准从旧的DAO层移植到JPA标准或QueryDSL。
由于我从未使用过这两种方法中的任何一种,所以我想知道应该使用哪个API ...
这是休眠标准:
public Page<ElearningSubscription> findWithPatternLike(String searchPattern, int pageNumber, int pageSize) {
Criteria criteria = getSession().createCriteria(getPersistentClass(), "es");
criteria.createAlias(DB_TABLE_USER_ACCOUNT, "u", CriteriaSpecification.INNER_JOIN);
Conjunction conjunction = Restrictions.conjunction();
String pattern = "%" + searchPattern + "%";
Criterion firstname = Restrictions.ilike("u.firstname", pattern);
Criterion lastname = Restrictions.ilike("u.lastname", pattern);
Criterion email = Restrictions.ilike("u.email", pattern);
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(firstname).add(lastname).add(email);
if (searchPattern.contains(" ")) {
String[] pieces = searchPattern.split(" ");
if (pieces[0] != null) {
Criterion firstnameBis = Restrictions.ilike("u.firstname", pieces[0]);
disjunction.add(firstnameBis);
}
if (pieces[1] != null) {
Criterion lastnameBis = Restrictions.ilike("u.lastname", pieces[1]);
disjunction.add(lastnameBis);
}
}
conjunction.add(disjunction);
OrderList orderList = new OrderList().add(Order.asc("u.firstname")).add(Order.asc("u.lastname")).add(Order.asc("u.email")).add(Order.desc("es.subscriptionDate"));
Page<ElearningSubscription> page = getPage(pageNumber, pageSize, criteria, orderList);
return page;
}
感谢您的指导。
亲切的问候,
斯蒂芬·艾伯特
JPA 2条件是一个官方标准,但是Querydsl在以下方面具有优势
因为我参与了Querydsl开发,所以这个答案是有偏见的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句