我是hibernate的新手。我想傳遞2列值,並希望hibernate返回該表的主鍵。休眠返回整數值
String queryString = "select perId from Permission where document.docId=1 and user.id=2";
return getHibernateTemplate().find(queryString);
但是這個方法返回List。 我怎樣才能返回int值。
我是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();
你可以這樣做:
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;
什麼是這種方法的好處? –
這裏用另一種方式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個結果。它將拋棄NonUniqueResultException - 如果有多個匹配結果。 – ManuPK