IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

[EJB3] Persister un objet référencant d'autres objets déjà persistés


Sujet :

JPA Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations forums :
    Inscription : Mai 2002
    Messages : 45
    Points : 36
    Points
    36
    Par défaut [EJB3] Persister un objet référencant d'autres objets déjà persistés
    Bonjour,
    Je me fais la main sur les ejb3, et je rencontre un cas que je n'arrive pas à résoudre.

    J'ai un Entity User.
    J'ai un Entity Friendship, qui référence 2 User.
    Un User possède une collection de Friendship.

    Dans un premier temps, je persiste mes Users. Tout se passe bien.

    Puis je veux persister une relation Friendship entre ces 2 Users.
    Que je tente de faire un merge sur le user porteur de cette relation (dans sa collection de Friendship) ou que je persiste la nouvelle instance de Friendship, j'ai toujours une EntityExistsException.

    Quelqu'un saurait me dire pourquoi?

    Merci.

    JM

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Je n'arrive pas à suivre ta logique, et difficile de te dire l'origine de l'exception sans la moindre ligne de code ...

    Mais sinon, pourquoi compliques tu la chose ? Ne serait il pas beaucoup plus simple de faire une seule entité User avec une relation ManyToMany avec elle même ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations forums :
    Inscription : Mai 2002
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par djo.mos Voir le message
    Mais sinon, pourquoi compliques tu la chose ? Ne serait il pas beaucoup plus simple de faire une seule entité User avec une relation ManyToMany avec elle même ?
    J'y ai pensé, mais je veux ajouter 2 champs à mon association de 2 User.

    Voici un peu de code, à commencer par ma classe User :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Entity
    @Table(name="users")
    public class User implements Serializable, Comparable<User> {
     
    	@Id
    	@GeneratedValue(strategy=GenerationType.SEQUENCE)
    	private Long userId;
     
    	@OneToMany(mappedBy="friendshipId", cascade=CascadeType.ALL)
    	private List<Friendship> friendshipList;

    Ma classe Friendship :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    @Entity
    @Table(name="friendship")
    public class Friendship implements Serializable {
    	private static final long serialVersionUID = -3698877885945505020L;
     
    	@Id
    	@GeneratedValue(strategy=GenerationType.SEQUENCE)
    	private Long friendshipId;
     
    	@ManyToOne
    	@JoinColumn(name="fromuserid", nullable=false)
    	private User fromUser;
     
    	@ManyToOne
    	@JoinColumn(name="touserid", nullable=false)
    	private User toUser;
     
    	private int status;
     
    	private Date saveDate;

    Et ma tentative de persistance :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    Friendship fr = new Friendship();
    fr.setFromUser(fromUser);
    fr.setToUser(toUser);
    fr.setStatus(FriendshipStatus.REQUESTED);
    fr.setSaveDate(new Date());
    ...
    fromUser.addFriendship(fr);
    _em.merge(fromUser);
    //_em.persist(fr);

    Merci de votre aide.

    JM

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/04/2008, 10h41
  2. [POO] Gérer des objets associés à d'autres objets
    Par metos00 dans le forum Langage
    Réponses: 1
    Dernier message: 07/10/2007, 22h00
  3. Position d'objet dans un autre objet
    Par Speed41 dans le forum Delphi
    Réponses: 14
    Dernier message: 20/02/2007, 20h51
  4. Réponses: 7
    Dernier message: 10/02/2007, 05h41
  5. Réponses: 6
    Dernier message: 08/09/2004, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo