Hibernate返回整数值

时间:2011-10-22 09:52:49

标签: java hibernate spring spring-mvc hql

我是hibernate的新手。我想传递2个列值,并希望hibernate返回该表的主键。

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

但是这个方法返回List。 我怎样才能返回int值。

3 个答案:

答案 0 :(得分:15)

在Query中使用uniqueResult()方法。有关示例,请参阅here或阅读api here

这是一个例子。根据需要更换占位符。

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

答案 1 :(得分:4)

您可以执行以下操作:

 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;

答案 2 :(得分:0)

以下是使用addScalar的另一种方法:

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

字符串示例:

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