Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导端点返回对象,包括2个对象列表_Java_Spring Boot - Fatal编程技术网

Java Spring引导端点返回对象,包括2个对象列表

Java Spring引导端点返回对象,包括2个对象列表,java,spring-boot,Java,Spring Boot,我有一个简单的方法 public ResponseEntity<List<Item>> findAllByParameters(@RequestBody ListofParameters listOfParameters) { log.info("Find All items with given parameter"); return ResponseEntity.ok(itemRepository.findAllBy(listOfParameters)

我有一个简单的方法

public ResponseEntity<List<Item>> findAllByParameters(@RequestBody ListofParameters listOfParameters) {
    log.info("Find All items with given parameter");
    return ResponseEntity.ok(itemRepository.findAllBy(listOfParameters));
}
我的参数列表现在看起来像这样,它只有一个字符串列表

@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种颜色,只匹配两种,我将不会得到缺少一种颜色的信息,只会得到两个对象的列表

问题是,我想知道哪些项目不匹配。我想好的解决方案是返回一个包含两个对象列表的对象,一个匹配给定颜色,另一个不匹配

有人知道怎么做吗

类似地,如果我尝试找到3种颜色,只匹配两种,我将不会得到缺少一种颜色的信息,只会得到两个对象的列表。 问题是,我想知道哪些项目不匹配

要知道丢失了哪些项目

假设数据库中包含蓝色和红色的项。 您的请求包含蓝色、红色和黄色。 输出您想要黄色,因为数据库中没有任何黄色的项

public void myMethod(){
  ListOfParameters listOfParameters = new ListOfParameters();
  listOfParameters.setColors(Arrays.asList("blue", "red", "yellow"));

   // items with "red" and "blue" would return
  List<item> items =  ItemRepository.findAllBy(listOfParameters);


 // convert List<item> into List<String> having color "red" and "blue" 
 List<String> includeColors =    items.stream().map(Item.getColor()).collect(Collectors.toList());


  // remove common color
  listOfParameters.getColors().removeAll(includeColors)

  o/p  [yellow]


  s.o.p(listOfParameters.getColors());


}