У меня такая ситуация:
В моем проекте я использую весеннюю загрузку с данными о пружине. Поэтому сейчас мне нужно отфильтровать основную сущность по различным полям.Поля и их значения поступают в формате json в теле запроса при последующем вызове следующим образом.
{
"filters": [
{
"field": "ownerUiids",
"terms": "1,2"
},
{
"field": "key",
"terms": "a"
},
{
and many more
}
],
"sortBy": "wwww"
}
У меня есть класс pojo для преобразования этого json в java.и в этом классе pojo содержится список полей, поступающих изjson.
Я преобразовал этот список в карту поля и его значение в качестве ключа и значения, например:
Map<String,String> filterMap =
request.getFilters().stream().collect(Collectors.toMap(Filter::getField,
Filter::getTerms));
Так что моя проблема начинается здесь, имя поля в json не совпадает с моим столбцомname в db, поэтому при определении критериев api фактическое имя столбца не появляется при создании запроса.
Чтобы решить эту проблему, я создал постоянную статическую карту с ключом в качестве поля json, а значением является фактическое имя столбца, соответствующее этому полюкак:
public static final Map<String, String> myMap = Collections.unmodifiableMap(
new HashMap<String, String>() {{
put("ownerUiids", "ownerUIID");
put("key", "keyValue");
}});
Так что, когда я делаю filterMap, мне нужно, чтобы ключ был значением константы myMap, т.е. вместо Filter :: getField, если я могу сделать myMap.getKey (Filter :: getField).Но сейчас я не могу так поступить.
Map<String,String> filterMap =
request.getFilters().stream().collect(Collectors.toMap(myMap.getKey(Filter::getField),
Filter::getTerms));
После этого у меня есть карта имени столбца и его значение, которое является моим текущим требованием.а также решить мою проблему.
Пожалуйста, помогите мне в этом sol.или если у вас есть лучший подход, чем этот, то это также заметно.