Advertisement
Guest User

code

a guest
Oct 19th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.54 KB | None | 0 0
  1. package com.auroradev.auroraserver.storage;
  2.  
  3. import org.hibernate.Session;
  4.  
  5. import javax.persistence.criteria.CriteriaBuilder;
  6. import javax.persistence.criteria.CriteriaQuery;
  7. import javax.persistence.criteria.Root;
  8. import java.util.List;
  9.  
  10. public class QueryBuilder<T> {
  11.     private Session session;
  12.     private CriteriaBuilder criteriaBuilder;
  13.     private CriteriaQuery<T> criteriaQuery;
  14.     private Root root;
  15.  
  16.     public QueryBuilder(Session session, Class<T> tClass) {
  17.         this.session = session;
  18.         criteriaBuilder = session.getCriteriaBuilder();
  19.         criteriaQuery = criteriaBuilder.createQuery(tClass);
  20.         root = criteriaQuery.from(tClass);
  21.     }
  22.  
  23.     public QueryBuilder<T> where(String property, Object value) {
  24.         criteriaQuery = criteriaQuery.where(criteriaBuilder.equal(root.get(property), value));
  25.  
  26.         return this;
  27.     }
  28.  
  29.     public QueryBuilder<T> orderBy(String property, String direction) {
  30.         switch (direction.toLowerCase()) {
  31.             case "asc":
  32.                 criteriaQuery = criteriaQuery.orderBy(criteriaBuilder.asc(root.get(property)));
  33.                 return this;
  34.             case "desc":
  35.                 criteriaQuery = criteriaQuery.orderBy(criteriaBuilder.desc(root.get(property)));
  36.                 return this;
  37.         }
  38.  
  39.         return this;
  40.     }
  41.  
  42.     public T getSingleResult() {
  43.         return session.createQuery(criteriaQuery).getSingleResult();
  44.     }
  45.  
  46.     public List<T> getResultSet() {
  47.         return session.createQuery(criteriaQuery).list();
  48.     }
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement