Hibernate: установить параметр в sum () - PullRequest
0 голосов
/ 05 января 2012

Основной вопрос здесь: я хочу использовать агрегатную функцию sum () для предоставленного пользователем столбца, я пробовал запрос ниже, но, похоже, он не работает, может кто-то просветить меня?

public Long clientCustomQuery(String option, Date startDate, Date endDate){
    StringBuilder sb = new StringBuilder("select sum(:option) from Session as s ");
    sb.append("where s.date >= :startDate and s.date <= :endDate");
    Query query = this.getEntityManager().createQuery(sb.toString());
    query.setParameter("option", option);
    query.setParameter("startDate", startDate);
    query.setParameter("endDate", endDate);
    return (Long)query.getSingleResult();
}

Спасибо

David

1 Ответ

1 голос
/ 05 января 2012

Вы не можете использовать имя столбца в качестве параметра запроса, подобного этому. Hibernate не просто делает подстановку String. Он переводит запрос в запрос SQL и использует подготовленный оператор для привязки параметров. И имя столбца не может быть параметризовано.

Вам нужно будет выполнить подстановку строк самостоятельно:

"select sum(" + option + ") from..."

Примечание: использование StringBuilder для объединения статических строк бесполезно и даже неэффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...