A maneira mais fácil de remover os relacionamentos recursivos bidirecionais?
Eu uso oGson biblioteca para converter objetos Java em uma resposta Json ... o problema é que, após uma solicitação JPA, o objeto recuperado do banco de dados não pode ser convertido devido a um relacionamento recursivo com outras entidades (veja minha pergunta anterior) por exemplo :
<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>
Meu código fonte:
<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>
Como você pode ver aqui eu fiz:
<code> for(int i=0;i<gps.getCoordonneesList().size();i++){ gps.getCoordonneesList().get(i).setGpsImei(null); } </code>
apenas para matar o relacionamento recursivo definindo null para cada objeto GPS no coordonneesList.
Na sua opinião, esta é uma boa solução ou existe outro método mais prático? obrigado