У меня есть класс Entity, подобный этому:
class EntityClass {
UUID id;
String param1, param2, param3;
//Getters and Setters
}
Мой класс Service будет иметь такой метод, чтобы использовать все подобные столбцы, и я хочу иметь возможность обрабатыватьвсе запросы с одним и тем же методом репозитория вместо написания нескольких методов репозитория для каждого случая, когда комбинация параметров равна нулю.
class ServiceClass {
List<EntityClass> getAllBy(List<String> param1, List<String> param2, String param3) {
return repositoryInterface.customFindAll(param1, param2, param3);
}
}
Теперь мой класс репозитория должен иметь этот метод.Но я хочу иметь возможность обрабатывать случай, когда любая комбинация {param1, param2, param3} может быть нулевой, как в {param1 = null или empty, param2! = Null, param3! = Null} или {param1 = null или empty, param2 = null или empty, param3! = null} и т. д.
Метод репозитория customFindAll должен в основном иметь возможность поиска в таблице сущностей, чтобы проверить, присутствует ли значение столбца param1
в каком-либо из списков отправленных значений и т. д.если нет null
.
Итак, как мне обрабатывать нативный запрос в JPA весной, чтобы сделать это вместо создания разных методов для разных комбинаций?
interface RepositoryInterface extends JpaRepository<EntityClass, UUID> {
@Query(value = "FILL THE QUERY", nativeQuery = true)
List<EntityClass> customFindAll(@Param("param1") List<String> param1, @Param("param2") List<String> param2, @Param("param3") String param3)
}