2014-08-29 3 views
0

Есть ли у кого есть ключ к тому, почему ключевое слово DISTINCT удаляется из запроса при использовании DataNucleus (это программное обеспечение, в котором я работаю для использования)? Мне удалось отладить код и проверить, действительно ли ключевое слово связано с запросом. Но к тому времени эта функция вызывается в JPAEntityManagerКлючевое слово DISTINCT удаляется из запроса

createQuery(CriteriaQuery<T> criteriaQuery) 

неповторяющиеся ключевое слово удаляется. Отладка показала мне, что это как-то связано с

criteria.getCompilation(ec.getMetaDataManager(), ec.getClassLoaderResolver()); 

функция call. Как-то функция createQuery() отлично работает с SELECT COUNT (DISTINCT DN_THIS), но не с SELECT DISTINCT FROM.

Я надеюсь, что у некоторых из вас есть хотя бы небольшая идея, где проблема, поскольку я довольно новичок в JPA и SQL-запросах в целом, что я не могу найти быстрое решение самостоятельно.

Запрос Я пытаюсь выполнить это следующим образом:

SELECT DISTINCT DN_THIS FROM Hop DN_THIS JOIN DN_THIS.tags t WHERE ((DN_THIS.entityStatus <> 'DELETED') AND ((t.name = :DN_PARAM_4) OR (t.name = :DN_PARAM_5))) ORDER BY DN_THIS.name ASC 

Спасибо!

+0

Пожалуйста, добавьте ваш SQL-запрос к вопросу. – heikkim

+0

Теперь он отредактирован. – trashed

+0

почему бы не определить используемый вами критерий ?, а затем опубликовать то, что является toString() критерияQuery? и что находится в журнале при его выполнении –

ответ

0

Я предложил разработчику DataNucleus, который, похоже, уже fixed the use of DISTINCT in criteria, который просто не передавался сгенерированному запросу.

+0

Хорошо, спасибо за вашу помощь. Кажется, у нас есть версия 3.2.5, использующая API DataNucleus JPA, а текущая версия JPA API - 4.0.2. Для меня имеет смысл, если проблема DISTINCT уже установлена ​​в критериях. – trashed

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