Java Jackson将嵌套对象保存到数据库

Java Jackson将嵌套对象保存到数据库,java,json,hibernate,jackson,Java,Json,Hibernate,Jackson,我正在使用jackson将json转换为java对象 java对象: class Person{ Long id; String name; City city; } class City{ Long id; String cityName; } jcson转换: List<Person> personList = objectMapper.readValue(json, new TypeReference<List<Person>

我正在使用jackson将json转换为java对象

java对象:

class Person{
   Long id;
   String name;
   City city;
}

class City{
   Long id;
   String cityName;
}
jcson转换:

List<Person> personList = objectMapper.readValue(json, new TypeReference<List<Person>>() { });

您可以建议吗?

您必须在Person实体的City属性中包含
cascade=“all”
(如果使用xml)或
cascade=CascadeType.all
(如果使用注释)

这是因为您正试图保存一个引用到未保存实体的实体

如果删除某人时不想删除城市记录 您必须通过以下步骤: 1-从数据库获取城市:
city-city=session.get(id,city.class)

2-设置个人所在城市:
person p=new person();p、 西城(市)


3-保存Person对象。

必须在Person实体的City属性中包含
cascade=“all”
(如果使用xml)或
cascade=CascadeType.all
(如果使用注释)

这是因为您正试图保存一个引用到未保存实体的实体

如果删除某人时不想删除城市记录 您必须通过以下步骤: 1-从数据库获取城市:
city-city=session.get(id,city.class)

2-设置个人所在城市:
person p=new person();p、 西城(市)


3-保存Person对象。

能否添加映射+dao?dao:session.saveOrUpdate(Person);可以添加映射+dao吗?dao:session.saveOrUpdate(person);使用级联删除时,用户将删除城市,但在本例中不是这样,因为一个城市可以应用于少数用户。城市的数据已经存储在数据库中,我不需要重新保存。当使用cascade删除时,人员将删除城市,这在这种情况下是不正确的,因为一个城市可以应用于少数用户。城市的数据已经存储在数据库中,我不需要重新保存
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: model.City