2016-06-22 2 views
0

json을 Java 객체로 변환하는 데 jackson을 사용하고 있습니다.Jackson은 데이터베이스에 중첩 된 객체를 저장합니다.

자바 객체 :

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>>() { }); 

사람을 저장할 때, 나는 다음과 같은 오류 얻을 :

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: model.City 

당신이 조언을 주실 수 있습니까?

+0

매핑을 추가 할 수 있습니까? –

+0

dao : session.saveOrUpdate (person); – user5488223

답변

0

Person 엔터티의 City 속성에서 cascade="all" (xml을 사용하는 경우) 또는 cascade=CascadeType.ALL (특수 효과를 사용하는 경우)을 포함해야합니다.

이는 저장되지 않은 항목을 참조하는 엔티티를 저장하려고하기 때문에 발생합니다.

당신은 당신이 논문 단계를 통과해야 인격 삭제할 때 도시의 레코드를 삭제 싶지 않는 경우 : 1 데이터베이스에서 도시를 받고 : City city=session.get(id,City.class);

2 설정 사람의 도시 : Person p=new person(); p.setCity(city);

3 Person 개체를 저장합니다.

+0

계단식 삭제를 사용하면 사람이 도시를 삭제합니다.이 경우 소수의 사용자에 대해 도시를 적용 할 수 있기 때문에 사실이 아닙니다. 도시의 데이터가 이미 db에 저장되어 있습니다. 저장하지 않아도됩니다. – user5488223

+0

답변을 업데이트했습니다. –

관련 문제