2016-04-12 14 views
2

を結合しません。 CarSharingクラスは正常に動作していますが、問題はPersonクラスにのみ発生します。@jsonbackreferenceは、私は2つのクラスを持っている関係

人を取得すると、carSharingプロパティを無視しているようです。 nullサーバに戻ったときに、更新はpersonテーブルのcarsharing_idへの参照のリンクを解除しています。

ループを停止しても問題ありませんが、クラスで利用できるcarSharingも必要です。

これを解決する方法はありますか?

答えて

1

あなたはジャクソン2.xのを使用している場合は、注釈@JsonIdentityInfoを使用することができます:オブジェクト識別情報は、/シリアル化JSONへ/からプロパティ値をデシリアライズする方法を決定するために使用されるかどうか

(および他のデータフォーマット)は、@ JsonIdentityInfoアノテーションの存在(またはその欠如)に基づいています。あなたは注釈を付ける場合例えばhttp://wiki.fasterxml.com/JacksonFeatureObjectIdentity

、クラスCarSharing
参照

import com.fasterxml.jackson.annotation.JsonIdentityInfo; 
import com.fasterxml.jackson.annotation.ObjectIdGenerators; 
//... 
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id") 
public class CarSharing { 

人のJSONの結果は、(私がこのクラスにフィールド名を追加しました)です:

{ 
    "carSharing": { 
     "@id": 1, 
     "id": 12345, 
     "owner": { 
     "carSharing": 1, 
     "name": "owner" 
     }, 
     "members": [ 
     { 
      "carSharing": 1, 
      "name": "owner" 
     }, 
     { 
      "carSharing": 1, 
      "name": "driver2" 
     }, 
     { 
      "carSharing": 1, 
      "name": "driver" 
     } 
     ] 
    }, 
    "name": "driver2" 
    } 

カーシャーリングのインスタンスid=12345

{ 
    "@id": 1, 
    "id": 12345, 
    "owner": { 
     "carSharing": 1, 
     "name": "owner" 
    }, 
    "members": [ 
     { 
     "carSharing": 1, 
     "name": "owner" 
     }, 
     { 
     "carSharing": 1, 
     "name": "driver2" 
     }, 
     { 
     "carSharing": 1, 
     "name": "driver" 
     } 
    ] 
    } 

フィールド@idはjacksonから生成されます。参照されるオブジェクトがシリアル化されていない場合、値は参照されるオブジェクトの@idに設定されます。

+0

ありがとう、私は今働いていると思う。 – user2316219

関連する問題