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