Вы заявляете, что
хотите иметь независимый от базы данных запрос.
Я думаю, у вас уже может быть такой запрос.
Оператор SQL довольно прост, и хотя я не претендую на то, что знаю каждый диалект SQL, я бы ожидал, что он будет работать со многими базами данных, вполне возможно, со всеми, что имеет отношение.
Поэтому моя основная рекомендация - настроить тесты для тестирования всех баз данных, которые вам нужно поддерживать, и проверить, работает ли он.
Если вы настаиваете на использовании JPQL, может сработать следующее:
Добавьте сущность / таблицу Two
с одним столбцом (id
) и двумя записями: 1
и 2
.
. Вы можете построить свой запрос следующим образом:
select
count(distinct coalesce(t.id, 1, d.createDate, 2, d.updateDate))
from Documents d, Two t
where (t.id = 1
and d.createDate >= :startDate
and d.createDate <= :endDate)
or (t.id = 2
and d.updateDate >= :startDate
and d.updateDate <= :endDate)
Не уверен, поддерживается ли count( function(x))
или нет .