Hibernate返回整数值

6

我刚接触Hibernate。我想传递两个列的值,并希望Hibernate返回该表的主键。

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

但是这种方法返回的是一个列表。我该如何返回整数值?

3个回答

17

在查询中使用uniqueResult()方法。 可以查看此处的示例或阅读此处的api。

这是一个示例。 根据需要替换占位符以使用它们。

    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
确保查询只会返回一个结果。如果存在多个匹配结果,它会抛出NonUniqueResultException异常。 - ManuPK

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
这种方法有哪些好处? - Anthony Garcia-Labiad

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接