Example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

List of usage examples for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY

Introduction

In this page you can find the example usage for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Prototype

ResultTransformer DISTINCT_ROOT_ENTITY

To view the source code for org.hibernate.criterion CriteriaSpecification DISTINCT_ROOT_ENTITY.

Click Source Link

Document

Each row of results is a distinct instance of the root entity

Usage

From source file:com.ignou.aadhar.dao.hibernate.TransactionDaoHibernate.java

License:Open Source License

/**
 * Gets the records from the Database based on the parameters provided.
 * @param searchField The field name on which the search is to be made.
 * @param searchValue Value which needs to be searched.
 * @param pageNumber Initial offset of the records.
 * @param recordsPerPage Total number of records which are selected for
 * resultset./* w w w.j  a va  2s.c o m*/
 * @param sortField Name of the field on which the data needs to be sorted.
 * @param sortOrder Order in which the sortField is sorted.
 * @return Returns the records as list of map where each map stores the
 * record data as key-value pairs.
 */
@Override
@Transactional
public List<Map<String, Object>> getTransactions(String searchField, String searchValue, Integer pageNumber,
        Integer recordsPerPage, String sortField, String sortOrder) {

    List<Transaction> records = null;
    List<Map<String, Object>> returnRecords = new ArrayList<Map<String, Object>>();

    Criteria criteria = getSessionFactory().getCurrentSession().createCriteria(Transaction.class);

    /* Add the search parameters to the criteria */
    if (searchField != null && !searchField.isEmpty() && searchValue != null && !searchValue.isEmpty()) {

        /* Prefix and suffix the searchValue with % */
        searchValue = "%" + searchValue + "%";

        /* Set the matching field accordingly */
        if ("uid".equals(searchField)) {
            criteria.add(Restrictions.ilike("citizen.uid", searchValue));

        } else if ("serviceprovider".equals(searchField)) {
            criteria.add(Restrictions.ilike("serviceProvider.name", searchValue));

        } else if ("clientTxnId".equals(searchField)) {
            criteria.add(Restrictions.ilike("spTransactionId", searchValue));

        } else if ("bankTxnId".equals(searchField)) {
            criteria.add(Restrictions.ilike("bankTransactionId", searchValue));

        } else if ("status".equals(searchField)) {
            criteria.add(Restrictions.ilike("status", searchValue));

        }
    }

    /* Let's first get the total number of records that satisfy the provided
     * parameters.
     */
    String totalCount = (String) criteria.setProjection(Projections.rowCount()).uniqueResult().toString();

    /* Reset the Criteria specification to remove the projection details */
    criteria.setProjection(null);
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);

    /* Set the default sort field if not provided */
    if (sortField != null && !sortField.isEmpty()) {

        /* Check what order was provided for this field */
        if ("asc".equals(sortOrder)) {
            /* Sort in ascending order */
            criteria.addOrder(Order.asc(sortField));

        } else if ("desc".equals(sortOrder)) {
            /* Sort in descending order */
            criteria.addOrder(Order.desc(sortField));

        } else {
            /* Default sort behaviour other wise */
            criteria.addOrder(Order.asc(sortField));
        }
    }

    /* Set the record filtering on pageCount and recordsPerPage if they are
     * available.
     */
    if (pageNumber != null && recordsPerPage != null) {
        records = criteria.setFirstResult(pageNumber).setMaxResults(recordsPerPage).list();
    } else {
        records = criteria.list();
    }

    /* Format the Date */
    SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy h:m:s a");

    /* Format this data before sending back for any other further usage */
    for (Transaction transaction : records) {

        /* Create new map for current transaction and add it to
         * master list
         */
        Map<String, Object> returnMap = new LinkedHashMap<String, Object>();
        returnMap.put("id", transaction.getId());
        returnMap.put("uid", transaction.getCitizen().getUid());
        returnMap.put("name", transaction.getCitizen().getName());
        returnMap.put("serviceprovider", transaction.getServiceProvider().getName());
        returnMap.put("clientTxnId", transaction.getSpTransactionId());
        returnMap.put("bankTxnId", transaction.getBankTransactionId());
        returnMap.put("status", transaction.getStatus());
        returnMap.put("created", format.format(transaction.getCreated()));
        returnMap.put("amount", transaction.getAmount());
        returnMap.put("totalCount", totalCount);

        returnRecords.add(returnMap);
    }

    return returnRecords;
}

From source file:com.jubination.model.dao.AdminDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public Object readPropertyList(Object entity, String listType) {
    Admin admin = (Admin) entity;//from   w  w w .j ava  2 s  . co  m
    List list = null;
    switch (listType) {
    case "Inbox":
        session = getSessionFactory().getCurrentSession();

        admin = (Admin) session.get(Admin.class, admin.getUsername());

        Criteria criteria = session.createCriteria(MailMessage.class, "msg");
        criteria.add(Restrictions.eq("msg.receiver.username", admin.getUsername()));
        criteria.addOrder(Order.desc("messageId"));

        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        criteria.setFirstResult(0);
        criteria.setMaxResults(10);
        list = criteria.list();

        break;
    case "Sent":
        session = getSessionFactory().getCurrentSession();

        admin = (Admin) session.get(Admin.class, admin.getUsername());

        criteria = session.createCriteria(MailMessage.class, "msg");
        criteria.add(Restrictions.eq("msg.sender.username", admin.getUsername()));
        criteria.addOrder(Order.desc("messageId"));

        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        criteria.setFirstResult(0);
        criteria.setMaxResults(10);
        list = criteria.list();

        break;
    default:
        System.out.println("Not an option");
        admin = null;
        break;
    }

    return (T) list;
}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED)
public List<TempClient> readClientWithStatus(String param) {
    session = getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(TempClient.class);
    criteria.add(Restrictions.eq("callStatus", param));
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    List<TempClient> list = criteria.list();
    System.out.println("READ TEMP CLIENT WITH A STATUS :::::::::::::::::::::::::::::::::::::::::::::::CHECK");
    return list;/* ww w  .  j a  v  a  2  s.c  o  m*/

}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED)
public List<TempClient> readClientOvernight() {
    session = getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(TempClient.class);
    criteria.add(Restrictions.eq("overnight", true));
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    List<TempClient> list = criteria.list();
    System.out.println("READ TEMP CLIENT OVERNIGHT :::::::::::::::::::::::::::::::::::::::::::::::CHECK");
    return list;//from www.  j  a v a  2 s .  c  o  m

}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public Object fetchInnerEntities(String param, String type) {
    List<Lead> list = null;
    if (param.equals("Lead")) {
        if (type.equals("NotificationOn")) {
            session = getSessionFactory().getCurrentSession();
            list = (List<Lead>) session.createCriteria(Lead.class).add(Restrictions.isNotNull("followUpDate"))
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();
        }/*w  w w .j ava  2s .  c om*/

        if (type.equals("Pending")) {
            session = getSessionFactory().getCurrentSession();
            list = (List<Lead>) session.createCriteria(Lead.class).add(Restrictions.ge("count", 1))
                    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();

        }

    } else if (param.equals("Number")) {
        session = getSessionFactory().getCurrentSession();
        list = (List<Lead>) session.createCriteria(Lead.class).createAlias("client", "c")
                .add(Restrictions.eq("c.phoneNumber", type))
                .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();

    } else if (param.equals("MissedAppointmentStatusToday")) {
        session = getSessionFactory().getCurrentSession();
        list = (List<Lead>) session.createCriteria(Lead.class)
                .add(Restrictions.and(Restrictions.like("missedAppointmentStatus", type, MatchMode.ANYWHERE),
                        Restrictions.eq("appointmentDate",
                                new SimpleDateFormat("yyyy-MM-dd").format(new Date()))))
                .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();

    } else if (param.equals("ActiveSourceLeads")) {
        session = getSessionFactory().getCurrentSession();
        list = (List<Lead>) session.createCriteria(Lead.class, "l").createAlias("client", "c")
                .add(Restrictions.and(Restrictions.ge("l.count", 1), Restrictions.eq("c.source", type)))
                .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();

    }
    if (list != null) {
        for (Lead lead : list) {
            if (lead != null) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
            }
        }
    }
    System.out.println("READ LEAD WITH A STATUS :::::::::::::::::::::::::::::::::::::::::::::::CHECK");
    return (T) list;
}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public Object getByProperty(Object entity, String listType) {
    List<Client> list = new ArrayList<Client>();
    switch (listType) {
    case "Email":
        String emailId = (String) entity;
        session = getSessionFactory().getCurrentSession();
        Criteria criteria = session.createCriteria(Client.class, "client");
        criteria.add(Restrictions.eq("emailId", emailId));
        list = criteria.list();// w w w.  j a  v a2s .co  m

        break;
    case "City":
        String city = (String) entity;
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "client");
        criteria.add(Restrictions.like("city", city, MatchMode.START));
        list = criteria.list();

        break;
    case "Id":
        Long orderId = (Long) entity;
        session = getSessionFactory().getCurrentSession();
        list.add((Client) session.get(Client.class, orderId));

        break;

    case "LeadId":
        String leadId = (String) entity;
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "client");
        criteria.add(Restrictions.eq("tempLeadDetails", leadId));
        list = criteria.list();

        break;
    case "Number":
        String number = (String) entity;
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class);
        criteria.add(Restrictions.like("phoneNumber", number, MatchMode.ANYWHERE));
        list = criteria.list();
        for (Client client : list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
            }
        }

        break;
    case "Name":
        String name = (String) entity;
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class);
        criteria.add(Restrictions.like("name", name, MatchMode.ANYWHERE));
        list = criteria.list();

        break;
    case "DateCreated":
        String dateCreated = (String) entity;
        session = getSessionFactory().getCurrentSession();

        criteria = session.createCriteria(Client.class);
        criteria.add(Restrictions.like("dateCreation", dateCreated, MatchMode.START));
        list = criteria.list();

        break;
    case "DateCreatedLeadProperty":
        dateCreated = (String) entity;
        session = getSessionFactory().getCurrentSession();

        criteria = session.createCriteria(Lead.class);
        criteria.createAlias("client", "c")
                .add(Restrictions.like("c.dateCreation", dateCreated, MatchMode.START));
        list = criteria.list();

        break;
    case "DateUpdatedFull":
        String dateUpdated = (String) entity;
        session = getSessionFactory().getCurrentSession();

        criteria = session.createCriteria(Client.class, "client");
        criteria.createAlias("client.lead", "l");
        criteria.createAlias("l.call", "c");
        criteria.add(Restrictions.like("c.DateUpdated", dateUpdated, MatchMode.START));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();

        for (Client client : list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                lead.getCall().size();
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
            }
        }

        break;

    default:
        System.err.println("Not a valid option");
        break;
    }
    System.out.println(
            "READ CLIENT WITH A PROPERTY (INNER AND NON INNER MIXED) :::::::::::::::::::::::::::::::::::::::::::::::CHECK");
    return list;
}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public List fetchEntities(String paramVal) {
    List list = null;// w  ww  .ja v  a2  s  . c  o m

    switch (paramVal) {

    case "PendingMinusOne":
        session = getSessionFactory().getCurrentSession();
        Criteria criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.add(Restrictions.and(Restrictions.lt("l.count", 0), Restrictions.isNull("l.followUpDate"),
                Restrictions.gt("l.leadId", "50000")));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();

        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;
    case "PendingInProgress":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.createAlias("l.call", "call");
        criteria.add(Restrictions.and(Restrictions.le("l.count", 0), Restrictions.gt("l.leadId", "50000"),
                Restrictions.eq("call.Status", "in-progress")));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();

        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;
    case "PendingAndNotified":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.add(Restrictions.or(Restrictions.and(

                Restrictions.ge("l.count", 1), Restrictions.eq("l.followUpDate", ""),
                Restrictions.isNull("l.followUpDate")),

                Restrictions.and(Restrictions.ge("l.count", 1), Restrictions.ne("l.followUpDate", ""),
                        Restrictions.isNotNull("l.followUpDate"),
                        Restrictions.le("l.followUpDate",
                                new SimpleDateFormat("yyyy-MM-dd").format(new Date()))),
                Restrictions.eq("l.followUpDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())))

        );
        criteria.addOrder(Order.desc("l.followUpDate"));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();

        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;

    case "Pending":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.add(Restrictions.and(Restrictions.and(Restrictions.ge("l.count", 1),
                Restrictions.isNull("l.missedAppointment"), Restrictions.isNull("l.followUpDate"))));

        criteria.addOrder(Order.asc("l.count"));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();
        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();

            }
        }
        break;
    case "Notified":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.add(
                Restrictions.or(
                        Restrictions.and(
                                Restrictions
                                        .and(Restrictions.ge("l.count", 1),
                                                Restrictions.and(
                                                        Restrictions.le("l.followUpDate",
                                                                new SimpleDateFormat("yyyy-MM-dd")
                                                                        .format(new Date())),
                                                        Restrictions.gt("l.followUpDate", "2016-01-01"))),
                                Restrictions.isNull("l.missedAppointment")),
                        Restrictions.and(
                                Restrictions.eq("l.followUpDate",
                                        new SimpleDateFormat("yyyy-MM-dd").format(new Date())),
                                Restrictions.eq("l.leadStatus", "Follow up/Call back"))));
        criteria.addOrder(Order.asc("l.followUpDate"));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();
        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;
    case "PendingMA":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class, "c");
        criteria.createAlias("c.lead", "l");
        criteria.add(Restrictions.and(Restrictions.ge("l.count", 1),
                Restrictions.eq("l.missedAppointment", true), Restrictions.isNull("l.followUpDate")));

        criteria.addOrder(Order.desc("l.count"));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();
        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;
    case "NotifiedMA":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class);
        criteria.createAlias("lead", "l");
        criteria.add(Restrictions.and(
                Restrictions.and(Restrictions.ge("l.count", 1),
                        Restrictions.and(
                                Restrictions.le("l.followUpDate",
                                        new SimpleDateFormat("yyyy-MM-dd").format(new Date())),
                                Restrictions.gt("l.followUpDate", "2016-01-01"))),
                Restrictions.eq("l.missedAppointment", true)));
        criteria.addOrder(Order.asc("l.followUpDate"));
        criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
        list = criteria.list();
        for (Client client : (List<Client>) list) {
            client.getLead().size();
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
        }
        break;

    case "Overnight":
        session = getSessionFactory().getCurrentSession();
        criteria = session.createCriteria(Client.class);
        criteria.add(Restrictions.eq("overnight", true));
        list = criteria.list();
        for (Client client : (List<Client>) list) {
            for (Lead lead : client.getLead()) {
                if (lead.getBeneficiaries() != null) {
                    lead.getBeneficiaries().size();
                }
                lead.getCall().size();
            }
            client.getLead().size();
        }
        break;

    default:

        break;
    }
    if (list != null) {
        System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$" + list.size() + "$$$" + paramVal);
    }

    System.out.println(
            "READ CLIENT WITH INNER ELEMENTS WITH STATUS :::::::::::::::::::::::::::::::::::::::::::::::CHECK");
    return list;

}

From source file:com.jubination.model.dao.ClientDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public List<Object> fetchFreshCallEntity(String fromDate, String toDate) {
    List list = null;/*  w  w  w . ja v a 2 s.  c  o  m*/
    session = getSessionFactory().getCurrentSession();
    Criteria criteria = session.createCriteria(Client.class, "client").add(Restrictions.and(
            Restrictions.ge("client.dateCreation", fromDate), Restrictions.le("client.dateCreation", toDate)));
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
    list = criteria.list();
    for (Client c : (List<Client>) list) {
        c.getLead().size();
        for (Lead l : c.getLead()) {
            l.getCall().size();
        }
    }

    System.out.println(
            "IMPORTANT:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" + list.size());
    return list;
}

From source file:com.jubination.model.dao.ProductsDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public List<String> fetchProductNames(String name) {
    session = getSessionFactory().getCurrentSession();
    return session.createCriteria(Products.class)
            .setProjection(Projections.projectionList().add(Projections.property("name")))
            .add(Restrictions.ilike("name", name, MatchMode.START))
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();

}

From source file:com.jubination.model.dao.ProductsDAOImpl.java

@Transactional(propagation = Propagation.REQUIRED, readOnly = true)
public List<String> fetchCampaignNames(String name) {
    session = getSessionFactory().getCurrentSession();
    return session.createCriteria(Campaigns.class)
            .setProjection(Projections.projectionList().add(Projections.property("name")))
            .add(Restrictions.ilike("name", name, MatchMode.START))
            .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY).list();
}