lonsomehell

Untitled

Dec 15th, 2015
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1.     public List<Book> multiCriteriaSearch(BookMultiCriteriaForm searchCriterias) {
  2.         CriteriaQuery<Book> bookCriteriaQuery = createMultiCriteriaSearchBooksCriteriaQuery(searchCriterias);
  3.  
  4.         return runCriteriaQuery(bookCriteriaQuery);
  5.     }
  6.  
  7.     private CriteriaQuery<Book> createMultiCriteriaSearchBooksCriteriaQuery(BookMultiCriteriaForm searchCriterias) {
  8.         CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
  9.  
  10.         CriteriaQuery<Book> bookCriteriaQuery = criteriaBuilder.createQuery(Book.class);
  11.  
  12.         Root<Book> bookRoot = bookCriteriaQuery.from(Book.class);
  13.  
  14.         Join<Book, Category> joinCategory = bookRoot.join("categories");
  15.         Join<Book, Author> joinAuthor = bookRoot.join("authors");
  16.  
  17.         List<Predicate> predicates = new ArrayList<Predicate>();
  18.  
  19.         if (searchCriterias.getISBN() != null && !searchCriterias.getISBN().isEmpty()) {
  20.             predicates.add(
  21.                     criteriaBuilder.like(bookRoot.<String>get("ISBN"), searchCriterias.getISBN()));
  22.         }
  23.         if (searchCriterias.getBookName() != null && !searchCriterias.getBookName().isEmpty()) {
  24.             predicates.add(
  25.                     criteriaBuilder.like(bookRoot.<String>get("name"), searchCriterias.getBookName()));
  26.         }
  27.         if (searchCriterias.getAuthorName() != null && !searchCriterias.getAuthorName().isEmpty()) {
  28.             predicates.add(
  29.                     criteriaBuilder.equal(joinAuthor.get("name"), searchCriterias.getAuthorName()));
  30.         }
  31.         if (searchCriterias.getCategoryName() != null && !searchCriterias.getCategoryName().isEmpty()) {
  32.             predicates.add(
  33.                     criteriaBuilder.equal(joinCategory.get("name"), searchCriterias.getCategoryName()));
  34.         }
  35.  
  36.         bookCriteriaQuery.select(bookRoot)
  37.                 .where(predicates.toArray(new Predicate[]{}))
  38.                 .distinct(true);
  39.         return bookCriteriaQuery;
  40.     }
  41.     private List<Book> runCriteriaQuery(CriteriaQuery<Book> bookCriteriaQuery) {
  42.  
  43.         TypedQuery<Book> query = em.createQuery(bookCriteriaQuery);
  44.  
  45.         List<Book> books = query.getResultList();
  46.  
  47.         System.out.println(query.unwrap(org.hibernate.Query.class).getQueryString());
  48.  
  49.         return books;
  50.     }
Advertisement
Add Comment
Please, Sign In to add comment