Исключение при вставке данных в данные с использованием JPA в NetBeans - PullRequest
0 голосов
/ 28 апреля 2010
SEVERE: Local Exception Stack:
Exception [EclipseLink-7092] (Eclipse Persistence Services - 2.0.0.v20091127-r5931): 
            org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot add a query whose types conflict with an existing query. 
    Query To Be Added: [ReadAllQuery(name="Voter.findAll" referenceClass=Voter 
    jpql="SELECT v FROM Voter v")] is named: [Voter.findAll] with arguments [[]].
    The existing conflicting query: [ReadAllQuery(name="Voter.findAll" referenceClass=
    Voter jpql="SELECT v FROM Voter v")] is named: [Voter.findAll] with arguments: [[]].

Ответы [ 8 ]

3 голосов
/ 14 августа 2010

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

Одна вещь, которую я не понимаю ... почему EclipseLink используется в GF? Это часть GF? Я использую Eclipse IDE, но не развертываю из Eclipse .. Я развертываю из своего скрипта ant build в командной строке. Я предполагаю, что GF должен использовать какой-то EclipseLink (раньше это TopLink?).

Один ответ выше сказал, чтобы убедиться, что нет устаревших файлов, удалить приложение и т. Д. Было бы здорово, если бы кто-то, кто это выяснил, мог предоставить больше деталей и объяснить это. Если это другой запрос с ошибкой, было бы неплохо, если бы вместо этой вводящей в заблуждение ошибки была показана ошибка.

Пока что я остановил GF, удалил все таблицы, перезапустил, повторно развернул (в папке autodeploy) и все еще решаю эту проблему прямо сейчас. Обычно я собираю / внедряю в папку автоматического развертывания несколько раз за короткие промежутки времени, так как я делаю быстрые изменения, а затем собираю / повторно развертываю.

2 голосов
/ 28 июля 2010

Я также столкнулся с этой проблемой, обнаружил, что исключение вообще не связано с файлом ошибок, проблема из другого запроса, например: @NamedQuery (name = "ChannelType.ALL", query = "SELECT channelType FROM ChannelType channelType WHERE channelType.applicationClient.applicationClientId =: applicationClientId ORDER BY channelType.channelTypId ASC")

проблема в том, что "ORDER BY channelType.channelTypId" ее нет, кроме порядка по первичному ключу, когда я удаляю эту строку, исключение только что исчезло.

Может быть, кто-то еще мог бы объяснить, почему это произошло. Спасибо

2 голосов
/ 08 июня 2010

Только для людей, которые все еще борются с этой ошибкой:

Отмените развертывание приложения и проверьте, не осталось ли устаревших (возможно, заблокированных) файлов. Это приведет к тому, что старые именованные запросы все еще существуют и, следовательно, не заменят их.

Удалите файлы и заново разверните. Ошибка должна исчезнуть.

Edit: Также проверьте, не сделали ли вы что-нибудь вроде ... WHERE o.object_id = :id ... вместо ... WHERE o.object = :object ...

Это было решением моих проблем. Мне потребовалось 3 недели, чтобы понять это. EclipseLink не очень понятен, когда речь заходит об исключениях. На самом деле произошла ошибка компиляции запроса. Вместо этого он генерирует исключение повторяющегося запроса.

1 голос
/ 28 апреля 2010

Похоже, что ваш запрос определен дважды. Либо в той же сущности, либо в другой сущности, либо в orm.xml

0 голосов
/ 23 мая 2012

У меня была проблема ... Настоящим исключением был искаженный @Named Query, но трассировка стека просто сказала:

"Описание исключения: невозможно добавить запрос, типы которого конфликтуют с существующий запрос "

Мое решение:

В единице постоянства измените Стратегию создания таблицы на «Нет», а Стратегию проверки на «Нет». При повторном запуске я получил настоящее Исключение (Malformed Query). Я исправил ошибку в запросе, вернулся к старой конфигурации в модуле сохранения, и все исключения исчезли.

0 голосов
/ 17 января 2012

Я схожу с ума, но, по крайней мере, это не работает:

@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id =:_id);

это работает:

@NamedQuery(name = "xyx", query = "SELECT count(v) FROM Classe v WHERE v.id = :_id);

"WHERE v.id =:_id" была ошибка

0 голосов
/ 23 августа 2011

также ошибка может возникать из-за некорректного именованного запроса, у меня было where y o.activo ->, которое показывает указанную ошибку.

0 голосов
/ 28 апреля 2010

Не уверен, что именно вы делаете, поскольку вы не показываете никакого кода, но это то, что в документации EclipseLink говорится об ошибке ECLIPSELINK-07092:

ECLIPSELINK-07092: Невозможно добавить запрос, типы которого конфликтуют с существующий запрос. Запрос для добавления: [{0}] имеет имя: [{1}] с аргументами [{2}]. Существующий конфликтующий запрос: [{3}] имеет имя: [{4}] с аргументами: [{5}].
Причина : EclipseLink обнаружил конфликт между пользовательским запрос с тем же именем и аргументами на сеанс.
Действие : убедитесь, что ни один запрос не добавлен в сеанс более одного раза. или измените имя запроса так, чтобы Запрос можно отличить от др.

В соответствии с приведенным выше описанием и трассировкой кажется, что вы добавляете запрос (фактически один и тот же) с тем же именем запроса более одного раза в сеанс. Вы не должны (или использовать другое имя запроса).

...