2014-10-27 1 views
1

Я получаю следующее сообщение об ошибке при попытке выполнить ниже query-org.hibernate.hql.internal.ast.ErrorCounter: неожиданный маркер: (

Ошибка

ERROR [2014-10-27 11:17:24,264] org.hibernate.hql.internal.ast.ErrorCounter: line 1:33: unexpected token: (
ERROR [2014-10-27 11:17:24,304] org.hibernate.hql.internal.ast.ErrorCounter: line 1:33: unexpected token: (
! antlr.NoViableAltException: unexpected token: (

ERROR [2014-10-27 11:17:24,306] org.hibernate.hql.internal.ast.ErrorCounter: line 1:68: unexpected token: MAX 
ERROR [2014-10-27 11:17:24,312] org.hibernate.hql.internal.ast.ErrorCounter: line 1:68: unexpected token: MAX 
! antlr.NoViableAltException: unexpected token: MAX 

Запрос

String sSubQuery = "SELECT om.path, om.originalSize, MAX(om.lastModified) "+ 
        "FROM "+ 
        "ObjectMetadata om "+ 
        "WHERE om.informationStoreId = '"+informationStoreDefinitionID+"' "+ 
        "GROUP BY om.path, om.originalSize"; 

      String sQuery = "SELECT SUM(o.originalSize) "+ 
        "FROM "+ 
        "("+ 
        " "+sSubQuery+ 
        ") "+ 
        "o"; 

      Query q = getEm().createQuery(sQuery); 

Пожалуйста, помогите.

+0

Поскольку вы не используете 'MAX (om.lastModified)' во внешнем запросе, вы можете просто опустить его. Фактически, поскольку вы просто суммируете 'om.originalSize' с фильтром, вам вообще не нужна производная таблица? – StuartLC

+0

Таблица содержит метаданные файлов и может содержать несколько записей в соответствии с именем файла, но в таблице она имеет различную последнюю измененную дату. Мне нужен - общий размер всех файлов, которые недавно были обновлены или изменены. –

+0

Когда я выполняю следующий запрос в postgres, он успешно выполнен - ​​'select sum (o.original_size) from (SELECT om.path, om.original_size, MAX (om.last_modified) FROM object_metadata om WHERE om.information_store_id = ' ff0dcb68-8aab-40f0-b8d8-fcfb82396f5d 'GROUP BY om.path, om.original_size) o ";' –

ответ

1

Попробуйте

String sSubQuery = "SELECT SUM(om.originalSize), MAX(om.lastModified) "+ 
        "FROM "+ "ObjectMetadata om "+ 
        "WHERE om.informationStoreId = :informationStoreDefinitionID "+ 
        "GROUP BY om.path, om.originalSize"; 

Query q = getEm().createQuery(sQuery); 
q.addParameter("informationStoreDefinitionID",22); 
+0

@StuartLC Мне нужно применить 'sum' к результату' sub query' для 'Max (lastModified)'. Таким образом, 'Sum()' необходимо применить для всех записей с максимальной датой 'max'' lastModified' –

+0

http://stackoverflow.com/questions/26603496/org-hibernate-hql-errors-in-hql-subquries –

 Смежные вопросы

  • Нет связанных вопросов^_^