Конвертация Map в объект через Jpa

299
13 октября 2017, 13:43

Есть Map<String, Object> с полями объекта. Нужно конвертировать эту мапу в объект так как это сделал бы Hibernate, используя колонки @Column(name="...").

Как это сделать?

Answer 1

Если задача именно в том, чтобы получить мапу, это можно сделать, например, средствами Jackson.

Опишем наши POJO:

public class Foo {
    @JsonProperty("Id")
    private int id;
    @JsonProperty("Name")
    private String name;
    @JsonProperty("Bar")
    private Bar bar;
    // конструкторы, геттеры, сеттеры, toString()
}
public class Bar {
    @JsonProperty("Id")
    private int id;
    @JsonProperty("Values")
    private List<String> values;
    // конструкторы, геттеры, сеттеры, toString()
}

Теперь можем создать экземпляр и превратить его в Map:

Foo foo = new Foo(1,
                  "myfoo",
                  new Bar(2000, Lists.newArrayList("foo", "bar", "baz"))
);

ObjectMapper mapper = new ObjectMapper();
Map<String, ?> map = mapper.convertValue(foo, new TypeReference<Map<String, Object>>() {});
System.out.println(map); // {Id=1, Name=myfoo, Bar={Id=2000, Values=[foo, bar, baz]}}

а Map можем перегнать обратно в объект типа Foo:

Foo newFoo = mapper.convertValue(map, Foo.class);
System.out.println(newFoo); // Foo{id=1, name='myfoo', bar=Bar{id=2000, values=[foo, bar, baz]}}
READ ALSO
Посчитать средний и общий бал

Посчитать средний и общий бал

Есть такой вот код, в условиях задачи сказано: Display the average and total rating of all student

268
Ошибочная сериализация полей с Gson

Ошибочная сериализация полей с Gson

У меня в обьекте есть поле:

240
Вопрос по защите приложения

Вопрос по защите приложения

Вообще никак нельзя определить, что приложение декомпилируетсяДекомпилятор работает с кодом как с потоком байтов, а не исполняемой сущностью

280
В чём разница между İnterface и Abstract класс

В чём разница между İnterface и Abstract класс

Добрый деньРаньше interface не имеел реализации и нам приходилось реализовывать абстрактные классы тд и тп

222