Najprostszy sposób usunięcia dwukierunkowych relacji rekurencyjnych?

używamGson biblioteka do konwersji obiektów Java na odpowiedź Jsona ... problem polega na tym, że po żądaniu JPA obiekt pobrany z DB nie może zostać przekonwertowany z powodu rekurencyjnego związku z innymi jednostkami (zobacz moje poprzednie pytanie) na przykład :

<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>

Mój kod źródłowy:

<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>

Jak widać tutaj zrobiłem:

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

tylko po to, aby zabić relację rekurencyjną, ustawiając wartość null dla każdego obiektu GPS na liście koordynacji.

Twoim zdaniem jest to dobre rozwiązanie, czy jest inna metoda bardziej praktyczna? Dzięki

questionAnswers(4)

yourAnswerToTheQuestion