vikas27
vikas27

Reputation: 573

Hibernate Return integer value

I am new to hibernate . I want to pass 2 column values and want hibernate to return primary key of that table.

String queryString = "select perId from Permission where document.docId=1 and user.id=2";
return getHibernateTemplate().find(queryString);

But this method return List. How can i return int value.

Upvotes: 6

Views: 36676

Answers (3)

Kamiel
Kamiel

Reputation: 1225

Here is another way using addScalar:

Query query = session.createQuery("select value from table where param1 = :param1").addScalar("value", Type);
query.setParameters("param1", value1);
result = (Type) query.uniqueResult();

Example of String:

Query query = session.createQuery("select value from table where param1 = :param1").addScalar("value", StandardBasicTypes.STRING);
query.setParameters("param1", value1);
result = (String) query.uniqueResult();

Upvotes: 0

ManuPK
ManuPK

Reputation: 11839

Use the uniqueResult() method in Query. see here for an example or read the api here.

Here is an example. Replace the place holders as need to use them.

    sessionFactory = getHibernateTemplate().getSessionFactory();
    Session session = sessionFactory.getCurrentSession();
    Query query = session
            .createQuery("select value from table where ...");
    query.setParameters("param1", value1);
    result = (Type) query.uniqueResult();

Upvotes: 17

Francisco Spaeth
Francisco Spaeth

Reputation: 23913

You could do something like:

 String sql = "select count(*) from table where ...";
 BigDecimal count = (BigDecimal) hibernateTemplate.execute(
   new HibernateCallback() { 
    public Object doInHibernate(Session session) throws HibernateException {
     SQLQuery query = session.createSQLQuery(sql);
     return (BigDecimal) query.uniqueResult();
    }});
 return count;

Upvotes: 4

Related Questions