Я использую Spring data jpa repositories
, получил требование предоставить функцию поиска с разными полями. Ввод полей перед поиском является необязательным. У меня есть 5 полей: EmployeeNumber
, Name
, Married
, Profession
и DateOfBirth
.
Здесь мне нужно запрашивать только с заданными значениями пользователем, а другие поля следует игнорировать .Ex,
Input : EmployeeNumber: ,Name:St,Married: ,Professsion:IT,DateOfBirth:
Query : Select * from Employee e where Name like 'St%' and Profession like 'IT%';
Input : EmployeeNumber:10,Name: ,Married: ,Professsion:IT,DateOfBirth:
Query : Select * from Employee e where EmployeeNumber like '10%' and Profession like 'IT%';
Итак, здесь мы рассматриваем введенные значения и запросы. В этом случае данные Spring имеют ограничение, указанное в этом сообщении (Не масштабируемо, и все возможные запросы должны быть записаны).
Я использую Querydsl
, но проблема существует, поскольку поля null
следует игнорировать, и необходимо разработать почти все возможные запросы. В этом case 31 queries
.
что, если поля поиска 6,7,8...
??
Каков наилучший подход для реализации опции поиска с необязательными полями?