Gsonライブラリを使用して、JavaオブジェクトをJsonレスポンスに変換します。 JPA要求後、DBから取得したオブジェクトは、他のエンティティ(see my previous question)との再帰的関係のため変換できません。双方向再帰関係を削除する最も簡単な方法は?
public class Gps implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "IMEI", nullable = false, length = 20)
private String imei;
//some code here...
@OneToMany(cascade = CascadeType.ALL, mappedBy = "gpsImei", fetch = FetchType.LAZY)
private List<Coordonnees> coordonneesList;
public class Coordonnees implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "IDCOORDONNEES", nullable = false)
private Integer idcoordonnees;
//some code here...
@JoinColumn(name = "GPS_IMEI", referencedColumnName = "IMEI", nullable = false)
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Gps gpsImei;
私のソースコード:
EntityManagerFactory emf=Persistence.createEntityManagerFactory("JavaApplication21PU");
GpsJpaController gjc=new GpsJpaController(emf);
Gps gps=gjc.findGps("123456789");
for(int i=0;i<gps.getCoordonneesList().size();i++){
gps.getCoordonneesList().get(i).setGpsImei(null);
}
Gson gson=new Gson();
String json=gson.toJson(gps);//convert to json response
System.out.println(json);
はあなたがここに見ることができるように私が作っ:
for(int i=0;i<gps.getCoordonneesList().size();i++){
gps.getCoordonneesList().get(i).setGpsImei(null);
}
のみcoordonneesList内の各GPSオブジェクトにnullを設定することにより、再帰的な関係を殺すために...
あなたの意見では、これは良い解決策である以上実用的な別の方法がありますか? ありがとう
感謝を設定します!これは、休止状態を扱う際の救命救助者でした。 gsonを使用して、休止状態のエンティティを変換するとき、私には大変なトラブルがありました。 – Knubo
もAndroidで動作します。 –
jarにはこの "GraphAdapterBuilder"クラスが含まれていますか? – pavan