На мой взгляд, specification
является мощным, когда критерии поиска имеют разные случаи, поэтому в основном это решило сложность после предложения sql where
. Как насчет SQL-предложения между select
и where
? Например, возможно ли использовать спецификацию для достижения следующих двух JPQL:
"select new b.C(a.type, count(a.id)) from A a where a.some_id =: someId and a.create_time between :startT and :stopT group by a.type"
List<C> function1(...)
если период поиска не назначен, тогда первый оператор становится:
"select new b.C(a.type, count(a.id)) from A a where a.some_id =: someId group by a.type"
List<C> function2(...)
if (startT == null && stopT == null) function1();
else function2();
Чем больше критериев поиска, тем больше функций. До сих пор я видел, что specification
возвращает либо List<TheEntity>
, либо Long для подсчета от JpaSpecificationExecutor
, мне интересно, можно ли его использовать для возврата индивидуального результата.