Skip to content

Commit

Permalink
TRUNK-6202 Replace Hibernate Criteria API with JPA for HibernateOpenm…
Browse files Browse the repository at this point in the history
…rsDataDAO (openmrs#4486)
  • Loading branch information
k4pran authored and Wandji69 committed Mar 29, 2024
1 parent 4a31469 commit 9646707
Showing 1 changed file with 32 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.criterion.Restrictions;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.openmrs.BaseOpenmrsData;
import org.openmrs.api.db.OpenmrsDataDAO;

Expand All @@ -36,30 +41,40 @@ public HibernateOpenmrsDataDAO(Class<T> mappedClass) {
*/
@Override
public List<T> getAll(boolean includeVoided) {
Criteria crit = sessionFactory.getCurrentSession().createCriteria(mappedClass);

Session session = sessionFactory.getCurrentSession();
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(mappedClass);
Root<T> root = cq.from(mappedClass);

if (!includeVoided) {
crit.add(Restrictions.eq("voided", false));
cq.where(cb.isFalse(root.get("voided")));
}
return crit.list();

return session.createQuery(cq).getResultList();
}

/**
* @see org.openmrs.api.db.OpenmrsDataDAO#getAll(boolean, java.lang.Integer, java.lang.Integer)
*/
@Override
public List<T> getAll(boolean includeVoided, Integer firstResult, Integer maxResults) {
Criteria crit = sessionFactory.getCurrentSession().createCriteria(mappedClass);

Session session = sessionFactory.getCurrentSession();
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(mappedClass);
Root<T> root = cq.from(mappedClass);

if (!includeVoided) {
crit.add(Restrictions.eq("voided", false));
cq.where(cb.isFalse(root.get("voided")));
}
crit.setFirstResult(firstResult);
crit.setMaxResults(maxResults);

return crit.list();


TypedQuery<T> query = session.createQuery(cq);
if (firstResult != null) {
query.setFirstResult(firstResult);
}
if (maxResults != null) {
query.setMaxResults(maxResults);
}
return query.getResultList();
}

/**
Expand All @@ -75,9 +90,8 @@ public int getAllCount(boolean includeVoided) {
}
Query query = sessionFactory.getCurrentSession().createQuery(hql);

Number count = (Number) query.uniqueResult();
Number count = JpaUtils.getSingleResultOrNull(query);

return count == null ? 0 : count.intValue();
}

}

0 comments on commit 9646707

Please sign in to comment.