Hibernate Возвращает целочисленное значение - PullRequest
5 голосов
/ 22 октября 2011

Я новичок в спящем режиме. Я хочу передать 2 значения столбца и хочу, чтобы hibernate возвращал первичный ключ этой таблицы.

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

Но этот метод возвращает список. Как я могу вернуть значение int.

Ответы [ 3 ]

15 голосов
/ 22 октября 2011

Используйте метод uniqueResult () в Query. см. здесь для примера или прочитайте 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();
4 голосов
/ 22 октября 2011

Вы можете сделать что-то вроде:

 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;
0 голосов
/ 08 ноября 2016

Вот еще один способ использования 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...