Search code examples
sqlhibernatespring-mvccriteriahibernate-criteria

spring mvc hiberate, use CriteriaQuery to run select * from table where


what i need is to run a sql query something like :

select * from table where alpahbetcolumn="A" and numbercolumn="10" and shelfcolumn="upper";

i want to know how to do this query in hibernate using EntityManager

currently this is my own try out, but not working....

@PersistenceContext
    EntityManager em;

@Transactional
    public List<Item> listItems(String alpahbet, String number, String shelf) {
        CriteriaQuery<Item> c = em.getCriteriaBuilder().createQuery(Item.class);
        c.from(Item.class);
        c..where( em.equal( alpahbet, "alpahbetcolumn" ) && em.equal( number, "numbercolumn" ) && em.equal( shelf, "shelfcolumn" ));
        return em.createQuery(c).getResultList();
    }

i only have a very vague understanding on spring hibernate topic..still learning... can someone please point me out how to do this sql query properly, with code example. thanks


Solution

  • i have worked out using criteriaquery to fullfill my needs, here is the code. it works

     @Transactional
        public List<Item> listItems(String alpahbet, String number, String shelf) {
            CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
            CriteriaQuery<Item> criteriaQuery = criteriaBuilder.createQuery(Item.class);
            Root<Item> itemRoot = criteriaQuery.from(Item.class);
            criteriaQuery.select(itemRoot).where(criteriaBuilder.equal(itemRoot.get("alpahbetField"), alpahbet), criteriaBuilder.equal(itemRoot.get("numberField"), number), criteriaBuilder.equal(itemRoot.get("shelfField"), shelf));
            return em.createQuery(criteriaQuery).getResultList();
        }