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

Hibernate Java Discussion :

saveOrUpdate() qui crée des doublons lors de l'update


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 216
    Points
    216
    Par défaut saveOrUpdate() qui crée des doublons lors de l'update
    Bonjour,

    Je dispose d'une entité sur laquelle je fais un saveOrUpdate() :
    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
    29
     
    public void SaveToDB(Department department, Integer countryId,
                Integer userId, Integer id) throws DataAccessException {
     
            Department d = null;
     
            try {
     
                SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
                Session session = sessionFactory.openSession();
                org.hibernate.Transaction tx = session.beginTransaction();
     
                Country country = (Country) session.load(Country.class, countryId);
                User user = (User) session.load(User.class, userId);
     
                d = department;
                d.setCountry(country);
                d.setUser(user);
     
                session.saveOrUpdate(d);
     
                tx.commit();
                session.flush();
                session.close();
     
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    Department.hbm.xml :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Generated 06-Apr-2009 11:35:45 by Hibernate Tools 3.2.1.GA -->
    <hibernate-mapping>
      <class catalog="poka_db" name="com.poka.domain.Department" table="department">
        <id name="departmentId" type="java.lang.Integer" unsaved-value="0">
          <column name="department_id" not-null="true"/>
          <generator class="increment"/>
        </id>
        <many-to-one class="com.poka.domain.User" fetch="select" name="user">
          <column name="fk_user_id"/>
        </many-to-one>
        <many-to-one class="com.poka.domain.Country" fetch="select" name="country">
          <column name="fk_country_id"/>
        </many-to-one>
        <property name="name" type="string">
          <column name="name"/>
        </property>
      </class>
    </hibernate-mapping>
    Quelques explications :
    Avec le code fourni juste avant, la création d'un Department se fait très bien en bdd. Par contre, lorsque je sélectionne un Department déjà crée au sein de mon interface web et que j'update, ca ne marche pas. Impossible d'insérer en bdd.

    Si je met "<generator class="native"/>" et pas de "unsaved-value" ca me crée un doublon en bdd : les champs modifiés sont bien pris en compte, mais au sein d'une nouvelle ligne dans la bdd avec un autre id (en gros il ne fait pas de delete sur les données initiales).

    Je ne comprends pas très bien le fonctionnement de ce saveOrUpdate()

    Vos lumières seront grandement appréciées !

    Merci et bonne journée.

  2. #2
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 216
    Points
    216
    Par défaut
    C'est résolu.

    Mon problème venait du fait que je ne bindais pas l'id de mon entité dans ma jsp. Donc l'id était toujours nul, et le saveOrUpdate() faisait alors un save() tout le temps.

    Bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. NuméroAuto qui crée des doublons!
    Par Chrysostome dans le forum VBA Access
    Réponses: 21
    Dernier message: 03/05/2016, 16h02
  2. Logiciel qui crée des PDF "propres"
    Par al85 dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 23/02/2008, 16h35
  3. script qui crée des fichiers
    Par Emcy dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 09h28
  4. Réponses: 5
    Dernier message: 07/05/2007, 08h16
  5. [MySQL] Comment enlever des doublons lors de l'affichage d'un tableau dynamique ?
    Par wylls dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/12/2006, 14h54

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