2010-12-07 4 views
5

Comment envoyer des entités générées par JPA via un service Web JAX WS sans obtenir le une exception de cycle infini XML en raison du cycle de références dans ces entités?Entités JPA sur un service JAX WS sans boucle infinie

Une idée? J'ai trouvé ce MOXy qui peut le faire ... partiellement. Mais j'ai déjà généré les entités et ajouter manuellement XmlTransient et de telles annotations à chacun d'entre eux c'est fou.

Avez-vous une autre idée de comment le faire?

Merci!

Répondre

1

EclipseLink JAXB (MOXy) peut gérer cela avec sa mise en correspondance bidirectionnelle avec @XmlInverseReference:

import javax.persistence.*; 

@Entity 
public class Customer { 

    @Id 
    private long id; 

    @OneToOne(mappedBy="customer", cascade={CascadeType.ALL}) 
    private Address address; 

} 

et

import javax.persistence.*; 
import org.eclipse.persistence.oxm.annotations.*; 

@Entity 
public class Address implements Serializable { 

    @Id 
    private long id; 

    @OneToOne 
    @JoinColumn(name="ID") 
    @MapsId 
    @XmlInverseReference(mappedBy="address") 
    private Customer customer; 

} 

Pour plus d'informations, voir:

Vous pouvez également utiliser la représentation extériorisée de Moxy des métadonnées pour cela. Pour plus d'informations, voir:

+0

dude. je connais ton blog. Je l'ai lu c'est plutôt cool. Merci pour l'aide. Mais il y a ce problème: je fais face à de nombreuses entités qui sont générées à partir de la base de données (comme de nombreux outils peuvent le faire). Comment puis-je les personnaliser afin qu'ils génèrent @XmlInverseRefrence automatiquement? Merci: D – Andr

1

rendre votre getCustomer @XmlTransient

@XmlTransient

{

getCustomer public Client()

...