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 :

Créer 2 entités liées avec JPA dans une application Spring Boot


Sujet :

JPA Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 739
    Par défaut Créer 2 entités liées avec JPA dans une application Spring Boot
    Bonjour, je développe une petite application et essaye de Créer 2 entités liées avec JPA/hibernate dans une application Spring Boot

    Voilà les 2 entitées
    Code : 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
    21
    22
    23
    24
    25
    26
    27
    28
     
    @Entity
    @Table(name="SUBSCRIPTION")
    public class Subscription  implements Serializable {
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
     
        @ManyToOne()
        @JoinColumn(name = "CLIENT_ID", referencedColumnName = "ID", nullable=false)
        private UserEntity user;
        ........
        .......
     
    and
     
    @Entity
    @Table(name="USER1")
    public class UserEntity implements Serializable {
     
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
     
        @OneToMany(mappedBy="user", cascade = CascadeType.MERGE)
        private Set<Subscription> subscriptions;
        .....
        ......
    et dans cette méthode, j'essaye de créer une Subscription avec un UserEntity, qui existe déjà en base de données

    Code : 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
     
    public SubscriptionDto createSubscription(SubscriptionDto subscriptionDto) {
        UserEntity user = new UserEntity();
        user.setFirstName(subscriptionDto.getUser().getFirstName());
        user.setLastName(subscriptionDto.getUser().getLastName());
        user = this.userDao.update(user);
        Subscription subscription = new Subscription();
        subscription.setTypeOfSubscription(subscriptionDto.getTypeOfSubscription());
        subscription.setOptionsOfSubscription(subscriptionDto.getOptionsOfSubscription());
        subscription.setSubscriptionDate(new Date());
        subscription.setUser(user);
        subscription = this.subscriptionDao.update(subscription);
     
     
    avec 
     
    public T update( T entity ){
        return entityManager.merge( entity );
    }

    mais le système se plaint que le user existe déjà alors que j'ai cascade = CascadeType.MERGE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jakarta.servlet.ServletException: Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement [ERROR: duplicate key value violates unique constraint "user1_pkey"
      Détail : Key (id)=(1) already exists.] [insert into user1 (first_name,last_name,id) values (?,?,?)]; SQL [insert into user1 (first_name,last_name,id) values (?,?,?)]; constraint [user1_pkey]

  2. #2
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    498
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 498
    Billets dans le blog
    5
    Par défaut
    Il faut d'abord rechercher le vrai user par id (qui est soit persisté dans l'entité manager, soit à monter dans le cache d'Hibernate) et le setté dans la soscription.

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/08/2017, 15h23
  2. Réponses: 1
    Dernier message: 30/03/2013, 21h26
  3. Réponses: 3
    Dernier message: 22/03/2013, 14h07
  4. JPA dans une application java SE
    Par herguem dans le forum JPA
    Réponses: 0
    Dernier message: 12/11/2009, 23h32
  5. [linker]Probleme avec SDL dans une application Ogre3D
    Par smarties dans le forum Visual C++
    Réponses: 2
    Dernier message: 15/01/2007, 14h29

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