Я смущен DISTINCT в JPQL. У меня есть два JPQL запросов идентичны для «DISTINCT», за исключением одного из них:JPQL «DISTINCT» возвращает только один результат
String getObjectsForFlow =
"SELECT " +
" se.componentID " +
"FROM " +
" StatisticsEvent se " +
"WHERE " +
" se.serverID IS NOT NULL " +
" AND se.flowID = :uuid " +
" AND se.componentID IS NOT NULL " +
"ORDER BY " +
" se.timeStamp desc ";
String getObjectsForFlowDistinct =
"SELECT DISTINCT " +
" se.componentID " +
"FROM " +
" StatisticsEvent se " +
"WHERE " +
" se.serverID IS NOT NULL " +
" AND se.flowID = :uuid " +
" AND se.componentID IS NOT NULL " +
"ORDER BY " +
" se.timeStamp desc ";
я бегу немного кода, чтобы получить результаты от каждого запроса и сбросить их на стандартный вывод, и я получаю много строк с некоторыми дубликатов не явный, но для разных я получаю только одну строку, которая является частью нечеткого списка.
NOT DISTINCT
::: 01e2e915-35c1-6cf0-9d0e-14109fdb7235
::: 01e2e915-35c1-6cf0-9d0e-14109fdb7235
::: 01e2e915-35d9-afe0-9d0e-14109fdb7235
::: 01e2e915-35d9-afe0-9d0e-14109fdb7235
::: 01e2e915-35bd-c370-9d0e-14109fdb7235
::: 01e2e915-35bd-c370-9d0e-14109fdb7235
::: 01e2e915-35aa-1460-9d0e-14109fdb7235
::: 01e2e915-35d1-2460-9d0e-14109fdb7235
::: 01e2e915-35e1-7810-9d0e-14109fdb7235
::: 01e2e915-35e1-7810-9d0e-14109fdb7235
::: 01e2e915-35d0-12f0-9d0e-14109fdb7235
::: 01e2e915-35b0-cb20-9d0e-14109fdb7235
::: 01e2e915-35a8-66b0-9d0e-14109fdb7235
::: 01e2e915-35a8-66b0-9d0e-14109fdb7235
::: 01e2e915-35e2-6270-9d0e-14109fdb7235
::: 01e2e915-357f-33d0-9d0e-14109fdb7235
DISTINCT
::: 01e2e915-35e2-6270-9d0e-14109fdb7235
Адрес: Я ожидал бы список DISTINCT, содержащий одиннадцать (я думаю) записей.
Что такое SQL, сгенерированный для каждого запроса? – James
Не указано: SELECT objectClockSeqAndNode, objectTime FROM STATISTICSEVENT WHERE ((NOT (((sessionClockSeqAndNode IS NULL) AND (sessionTime IS NULL))) AND ((flowClockSeqAndNode =?) AND (flowTime =?))) AND NOT (((objectClockSeqAndNode IS NULL) И (objectTime IS NULL)))) ORDER BY TIMESTAMP DESC – DataN00bleus
Distinct: SELECT DISTINCT objectClockSeqAndNode, objectTime, ТШЕЗТАМР ОТ STATISTICSEVENT ГДЕ ((НЕ (((sessionClockSeqAndNode IS NULL) И (sessionTime IS NULL))) AND ((flowClockSeqAndNode =?) AND (flowTime =?))) AND NOT (((objectClockSeqAndNode IS NULL) AND (objectTime IS NULL)))) ORDER BY TIMESTAMP DESC – DataN00bleus