Der einfachste Weg, um die bidirektionalen rekursiven Beziehungen zu entfernen?

Ich verwende dasGson Bibliothek zum Konvertieren von Java-Objekten in eine Json-Antwort. Das Problem besteht darin, dass das aus der Datenbank abgerufene Objekt nach einer JPA-Anforderung aufgrund einer rekursiven Beziehung zu anderen Entitäten nicht konvertiert werden kann.Siehe meine vorherige Frage) zum Beispiel :

<code>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;
</code>

Mein Quellcode:

<code>  EntityManagerFactory emf=Persistence.createEntityManagerFactory("JavaApplication21PU");
  GpsJpaController gjc=new GpsJpaController(emf);

  Gps gps=gjc.findGps("123456789012345");

  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);  
</code>

Wie Sie hier sehen können, habe ich gemacht:

<code>   for(int i=0;i<gps.getCoordonneesList().size();i++){
     gps.getCoordonneesList().get(i).setGpsImei(null);
   }  
</code>

nur um die rekursive Beziehung zu beenden, indem Sie für jedes GPS-Objekt in der Koordinatenliste den Wert null setzen.

Ihrer Meinung nach ist dies eine gute Lösung oder gibt es eine andere praktikablere Methode? Vielen Dank

Antworten auf die Frage(4)

Ihre Antwort auf die Frage