问题描述
我想在 Postman 中使用本机查询显示来自 2 个不相关对象的结果,如下所示:
@Query(value = "select * from product p where p.id like concat('%',:productId,'%') ",nativeQuery = true)
List<Product> findProductById(String productId);
@Query(value = "select * from customer c where c.id like concat('%',:id,'%')",nativeQuery = true)
List<Customer> findCustomerById(String id);
我想用条件添加他们的结果:
@Override
public List<Object> findById(String customerId,String productId) {
List<Object> obj = new ArrayList<>();
if(customerId.isEmpty()){
obj.addAll(productRepository.findProductById(productId));
} else if(productId.isEmpty()){
obj.addAll(customerRepository.findCustomerById(customerId));
} else {
obj.addAll(productRepository.findProductById(productId));
obj.addAll(customerRepository.findCustomerById(customerId));
}
return obj;
}
这是我的控制器:
@GetMapping("/custom")
public List<Object> findById(@RequestParam(name = "customer") String customer,@RequestParam(name = "product") String product){
return service.findById(customer,product);
}
然而,在 Postman 中,当两者都为空时,它们只显示来自 List<Product>
的结果。有没有办法同时显示两者?
解决方法
您可以为此使用地图吗? 只需使用地图而不是列表即可。
Map<String,List<Object>> foo = new HashMap<String,List<Object>>();
List<Product> list = new ArrayList<Product>();
list.add("key1_value1");
list.add("key1_value2");
foo.put("key1",list);
List<Customer> list2 = new ArrayList<Customer>();
list2.add("key1_value1");
list2.add("key1_value2");
foo.put("key2",list2);