Java 休眠返回整数值
我刚开始冬眠。我希望传递2个列值,并希望hibernate返回该表的主键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
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。这种方法的好处是什么?