В моем приложении есть учетная таблица со столбцами «сумма», «оплата», «хорошо». Здесь мне нужно найти счета с нулевым балансом, добавив эти 3 столбца и сопоставив их с нулем. Ниже приведен мой запрос hql, который приводит к ошибке.
query = session.createQuery("FROM Accounts where accountId = :accId and SUM(amount + paidAmount + fine) = 0 order by name");
с ошибкой как:
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1613)
.......
... 106 more
Caused by: java.sql.SQLException: Invalid use of group function
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
... 121 more
Как я могу выполнить это условие, используя запрос HQL
У вас простая синтаксическая ошибка.
Ваш запрос должен быть:
query = session.createQuery("FROM Accounts where accountId = :accId and (amount + paidAmount + fine) = 0 order by name");
SUM()
так использовать нельзя.
Или, может быть, вы пытаетесь сделать что-то эквивалентное:
SELECT * FROM `table` GROUP BY <some_column> HAVING SUM(column1+column2)>0 ORDER BY column_name ASC
В этом случае вы можете использовать GROUP BY
и HAVING
.
Есть ли у вас какие-либо идеи по этому поводу stackoverflow.com/questions/78940342/…
ок... спасибо... мой разум застрял в этой SUM()...