У меня есть простой метод
public ResponseEntity<List<Item>> findAllByParameters(@RequestBody ListofParameters listOfParameters) {
log.info("Find All items with given parameter");
return ResponseEntity.ok(itemRepository.findAllBy(listOfParameters));
}
Мой список параметров выглядит следующим образом (на данный момент это только 1 список строк)
@Getter
@Setter
public class ListofParameters {
@NotNull
private List<String> colors;
Мой репозиторий фильтрует записи базы данных с помощьюэто параметры:
public interface ItemRepository extends CrudRepository<Item, String> {
@Query("SELECT it FROM Item it WHERE (it.color IS NULL OR it.color IN (:#{#listOfParameters.colors}))")
List<Item> findAllBy(@Param("listOfParameters") ListOfParameters listOfParameters);
}
Теперь я возвращаю полный список объектов, когда параметры соответствуют им, или пустой список, если они не соответствуют.
Аналогично, если я попытаюсь найти 3 цвета и сопоставить только два, я не получу никакой информации о пропущенном (просто получу список из двух объектов).
Проблема в том, что я хотел бы знать, какие элементы не совпадают.Думаю, что хорошим решением было бы вернуть объект, содержащий два списка объектов (один соответствует заданному цвету, а другой - нет)
Кто-нибудь знает, как это сделать?