Реализация notExists в Hibernate Критерии в Java - PullRequest
0 голосов
/ 29 августа 2018

Я работаю над существующим кодом, где у меня есть эти 3 таблицы

Таблица инв.

Таблица Prj

Таблица Prx

Описание таблицы Inv и таблицы Prx следующее,

Инв. -> a, b, c, PrjId, d, e, f

Prx -> u, v, w, InvId, PrjId, x, y, z

Теперь мне нужны все записи Inv, для которых

нет такой записи Prx, такой, что

Inv-> PrjId = Prx-> PrjId и Prx.u = 'некоторое значение1'

У меня уже есть один критерий для Inv, основанный на некоторых других атрибутах таблицы Inv, скажем, a = 'some value2' и b = 'some value3'

поэтому мне нужно добавить что-то похожее на предложение «не существует» к существующим Inv Criteria. Я пытался с Subqueries.notExists , но он не работает должным образом.

Было бы очень полезно, если бы кто-то подробно объяснил решение.

Заранее спасибо.

1 Ответ

0 голосов
/ 29 августа 2018

Эквивалентом notExists (x) является «левое соединение x, где x.id равен нулю», поэтому в терминах SQL вы должны сделать что-то вроде

select inv.* from Inv inv 
left join Prx prx on (prx.prjld_id = inv.prjld_id and prx.u = 'some value1')
where prx.id is null

Конечно, это не спящий критерий, но, возможно, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...