Pero esta version que tengo para cargar las listas estaba usando Criteria, no lo veo eficiente usar Criteria porque me lista todos los campos de la tabla, porque me enfoque en usar SQL-QUERY en XML de la siguiente forma:
Código:
En el CustomerDAOHibernate, lo tengo asi:<hibernate-mapping> <sql-query name="getListCustomers"> SELECT ba_customer_id, ba_company_id, code, name, comercial_name, discount, is_active, created, observation FROM ba_customer </sql-query> </hibernate-mapping>
Código:
El punto es como usar el mismo codigo que usaba con Criteria que funcionaba bien (ya que he notado que criteria tiene unos metodos especiales como setProjection y otros), que les muestro a continuacion:@SuppressWarnings("unchecked") public List<Customer> getAll(Pagination pagination) { Query query = sessionFactory.openSession().getNamedQuery("getListCustomers"); List criteria = query.list(); for (Iterator iterator = criteria.iterator(); iterator.hasNext();) { Customer customer = (Customer) iterator.next(); System.out.println("Name: " + customer.getName()); } }
Código:
Se los agradecere de que me puedan orientar para que tenga la misma funcionalidad con SQL-QUERY. @SuppressWarnings("unchecked") public List<Customer> getAll(Pagination pagination) { Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Customer.class); //Total Count criteria.setProjection(Projections.rowCount()); pagination.setTotalCount(criteria.uniqueResult()); //Pagination criteria.setProjection(null); criteria.setFirstResult(Integer.parseInt(String.valueOf(pagination.getStart()))); criteria.setMaxResults(Integer.parseInt(String.valueOf(pagination.getLimit()))); if(StringUtils.isNotEmpty(pagination.getSort())){ try { JSONArray jsonArray = new JSONArray(pagination.getSort()); if(jsonArray.length()>0){ JSONObject jsonObject = jsonArray.getJSONObject(0); String property = jsonObject.getString("property"); String direction = jsonObject.getString("direction"); if("ASC".equalsIgnoreCase(direction)){ criteria.addOrder(Order.asc(property)); }else{ criteria.addOrder(Order.desc(property)); } } } catch (JSONException e) { e.printStackTrace(); } }else{ criteria.addOrder(Order.desc("customerId")); } return criteria.list(); }