Hibernate Return integer value

2019-02-17 15:40发布

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.

3条回答
做个烂人
2楼-- · 2019-02-17 16:08

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();
查看更多
Deceive 欺骗
3楼-- · 2019-02-17 16:19

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();
查看更多
ゆ 、 Hurt°
4楼-- · 2019-02-17 16:20

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;
查看更多
登录 后发表回答