Есть ли способ автоматически сгенерировать сплющенное pojo из pojo с составом объекта - PullRequest
0 голосов
/ 31 января 2019

Мне нужно хранить документы в индексах Elasticsearch и для этого я определил отображение.От моего Java-клиента мне нужно снабдить его pojo, который выглядит как класс Compony.У него много дублированных значений.Я мог бы использовать шаблон композиции объекта, чтобы решить эту проблему, но Elasticsearch не может справиться с такой структурой, и поэтому он ожидает уплощение структуры.с той же структурой именования.

class Address {
    private String streetName;
    private String houseNumer;
    private String houseLetter;
    private String houseNumberAddition;
    private String zipCode;
    private String city;
    private String country;
}
class Company {
    private Address postalAddress;
    private Address visitorAddress;
    private Address establishmentAddress;
}

Кто-нибудь знает, возможно ли что-то подобное, автоматически генерировать сглаженное pojo из pojo с композицией объекта с префиксом имени для всех полей?

1 Ответ

0 голосов
/ 07 февраля 2019

Я получил решение для моей проблемы.Elasticsearch ожидает объект json со структурой, которая есть у меня в первом примере.Поэтому я добавил @JsonUnwrapped к полю со значением префикса, поэтому мой класс Company выглядит следующим образом:

class Company {
    @JsonUnwrapped(prefix = "postal")
    private Address postalAddress;
    @JsonUnwrapped(prefix = "visitor")
    private Address visitorAddress;
    @JsonUnwrapped(prefix = "Establishment")
    private Address establishmentAddress;
}

И результат будет:

{
  "postalStreetName":"",
  "postalHouseNumer":"",
  "postalHouseLetter":"",
  "postalHouseNumberAddition":"",
  "postalCity":"",
  "postalCountry":"",
  "visitorStreetName":"",
  "visitorHouseNumer":"",
  "visitorHouseLetter":"",
  "visitorHouseNumberAddition":"",
  "visitorCity":"",
  "visitorCountry":"",
  "establishmentStreetName":"",
  "establishmentHouseNumer":"",
  "establishmentHouseLetter":"",
  "establishmentHouseNumberAddition":"",
  "establishmentCity":"",
  "establishmentCountry":""
}    

Так что мне не нужно каким-то волшебным образом создавать эти pojo, потому что Джексон может создавать нужные мне файлы json.

...