gpt4 book ai didi

java - 使用 Jackson 将 JSON 反序列化为 JPA 托管实体

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:20 27 4
gpt4 key购买 nike

当使用 Jackson 反序列化 JPA @Entity 时,我希望 Jackson 在托管实例上进行操作(如果存在),然后反序列化其上的所有属性;否则创建一个新的 transient 。

假设我的数据库中有一个Person:

+----+------+--------------+
| id | name | favoriteHero |
+----+------+--------------+
| 21 | John | NULL |
+----+------+--------------+

我想反序列化这个 JSON

{
"id": 21,
"favoriteHero": "Batman"
}

使用

Person john = objectMapper.readValue(jsonString, Person.class);

然后我需要 john 作为 JPA 托管实体,首先通过 id 从持久化上下文中检索,然后将 favoriteHero 设置为 Batman,这样

john.getId() == 21;
john.getName() == "John";
john.getFavoriteHero() == "Batman";

可能吗?

我尝试使用JsonDeserializer,但它会使用从数据库检索的实体,而不继续设置值(如果在数据库中找不到,它无法回退到默认反序列化)。

最佳答案

我认为你可以使用 GSON 做到这一点,如果这就是你的意思:https://github.com/google/gson示例:

Gson gson = new GsonBuilder().create();
Person p = gson.fromJson(reader, Person.class);

关于java - 使用 Jackson 将 JSON 反序列化为 JPA 托管实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36086215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com