2016-06-22 9 views
0

jsonをJavaオブジェクトに変換するためにjacksonを使用しています。ジャクソンはネストされたオブジェクトをデータベースに保存します

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

、私は次のエラーを取得する:

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

あなたはアドバイスしていただけますか?

+0

マッピング+あなたのDAOを追加できますか? –

+0

dao: session.saveOrUpdate(人); – 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

私は私の答えを更新しました –

関連する問題