Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠返回整数值_Java_Hibernate_Spring_Spring Mvc_Hql - Fatal编程技术网

Java 休眠返回整数值

Java 休眠返回整数值,java,hibernate,spring,spring-mvc,hql,Java,Hibernate,Spring,Spring Mvc,Hql,我刚开始冬眠。我希望传递2个列值,并希望hibernate返回该表的主键 String queryString = "select perId from Permission where document.docId=1 and user.id=2"; return getHibernateTemplate().find(queryString); 但是这个方法返回列表。 如何返回int值。您可以执行以下操作: String sql = "select count(*) from table

我刚开始冬眠。我希望传递2个列值,并希望hibernate返回该表的主键

String queryString = "select perId from Permission where document.docId=1 and user.id=2";
return getHibernateTemplate().find(queryString);
但是这个方法返回列表。
如何返回int值。

您可以执行以下操作:

 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;
在查询中使用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();

下面是使用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();

确保查询只会给出1个结果。如果有多个匹配结果,它将抛出ununiqueresultexception。这种方法的好处是什么?