我有两个名为client和quote的实体。
客户有很多报价。
许多报价都有客户。
@Entity
class Client
{
int c_id;
String clientName;
@OneToMany
List<Quote> quotes;
}
@Entity
class Quote
{
int q_id;
String item;
@ManyToOne
Client client;
}
JSON对象请求参数:
{
"clientName":"ABC pvt Ltd",
"quotes" :[
{
"item":"A"
},
{
"item":"B"
}
{
"item":"C"
}
]
}
我想在请求参数上面序列化到客户端对象。
ObjectMapper om = new ObjectMapper();
Client cli = om.convervalue(x,Client.class);
session.save(cli);
如果我运行上面的代码
有报价参考列表的客户。
但是引用类客户端引用为空。
所以,如果我想实现这一点,我会手动完成。
ObjectMapper om = new ObjectMapper();
Client cli = om.convervalue(x,Client.class);
List<Quote> quotes = cli.getQuotes;
for(int i=0;i<quotes.size();i++)
{
Quote qu = quotes.get(i);
qu.setClient(cli);
}
session.save(cli);
上述代码工作正常。
如何使用杰克逊图书馆自动完成。
有没有注释呢?
基本上需要双向关系序列化?
答案 0 :(得分:0)
使用以下注释根据hsonnate映射与@JsonManagedReference&amp;来映射你的json。 @JsonBackReference
@Entity
class Client
{
int c_id;
String clientName;
@OneToMany
@JsonManagedReference
List<Quote> quotes;
}
@Entity
class Quote
{
int q_id;
String item;
@ManyToOne
@JsonBackReference
Client client;
}
答案 1 :(得分:0)
在Client.class
中添加getter / setter或将字段设为公共字段。
然后尝试以下:
String json = "{\"clientName\":\"John\","+"\"quotes\":[{\"item\":\"A\"},{\"item\":\"B\"}]}";
ObjectMapper mapper = new ObjectMapper();
Client client = mapper.readValue(json,Client.class);
System.out.println(client);