Hibernate Return integer value

2019-02-17 15:23发布

问题:

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.

回答1:

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();


回答2:

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;


回答3:

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();