Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Page<UserDTO> findByCriteria(String columnName, final List<String> filters, String sort, Pageable pageable) {
- CriteriaBuilder cb = em.getCriteriaBuilder();
- CriteriaQuery<UserDTO> cq = cb.createQuery(UserDTO.class);
- Root<UserDTO> iRoot = cq.from(UserDTO.class);
- Join<UserDTO, User> bJoin= iRoot.join("user");
- cq.multiselect(bJoin.get("id"), bJoin.get("login"), bJoin.get("firstName"), bJoin.get("lastName"), bJoin.get("dayOfBirth"), iRoot.get("district"), iRoot.get("city"));
- final List<Predicate> predicates = new ArrayList<Predicate>();
- try {
- bJoin.<String>get(columnName).as(String.class);
- Expression<String> e1 = bJoin.<String>get(columnName).as(String.class);
- Expression convertedColumnName = cb.function("TO_CHAR", String.class, e1);
- filters.forEach(k -> {
- predicates.add(cb.like(cb.lower(convertedColumnName), "%" + k.toLowerCase() + "%"));
- });
- }catch (Exception e) {
- if (!filters.isEmpty()) {
- if (!iRoot.<String>get(columnName).getJavaType().toString().contains("String")) {
- Expression<String> e1 = iRoot.<String>get(columnName).as(String.class);
- Expression convertedColumnName = cb.function("TO_CHAR", String.class, e1);
- predicates.add(cb.like(convertedColumnName, "%" + filters + "%"));
- } else {
- filters.forEach(k -> {
- predicates.add(cb.like(cb.lower(iRoot.<String>get(columnName)), "%" + k.toLowerCase() + "%"));
- });
- }
- }
- }
- Predicate[] predArray = new Predicate[predicates.size()];
- predicates.toArray(predArray);
- cq.where(predArray);
- TypedQuery<UserDTO> query = em.createQuery(cq);
- Page<UserDTO> result = new PageImpl<UserDTO>(query.getResultList(), pageable, count);
- this.setWrappedData((List<UserDTO>) result.getContent());
- return result;
- }
- o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [VARCHAR] - [%ankara%]
- o.h.type.descriptor.sql.BasicBinder : binding parameter [2] as [VARCHAR] - [%istanbul%]
- o.h.type.descriptor.sql.BasicExtractor : extracted value ([col_0_0_] : [BIGINT]) - [0]
- org.hibernate.SQL : select user1_.id as col_0_0_, user1_.login as col_1_0_, user1_.first_name as col_2_0_, user1_.last_name as col_3_0_, user1_.day_of_birth as col_4_0_, userdto0_.district as col_5_0_, userdto0_.city as col_6_0_ from userdto userdto0_ inner join user user1_ on userdto0_.id=user1_.id where (lower(userdto0_.city) like ?) and (lower(userdto0_.city) like ?) order by user1_.id asc
Add Comment
Please, Sign In to add comment