休眠返回整数值

问题描述:

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

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

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

使用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

确保查询只给你1个结果。它将抛弃NonUniqueResultException - 如果有多个匹配结果。 – ManuPK

你可以这样做:

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

什么是这种方法的好处? –

这里用另一种方式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();