-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 
Author Message
 Post subject: [urgent] le merge ne fontionne pas
PostPosted: Tue Jun 01, 2010 11:22 am 
Newbie

Joined: Tue Jun 01, 2010 10:53 am
Posts: 3
Bonjour à tous,
J'ai une entité bean "produit" qui est mappé à la table produit dans une base de données Mysql.
J'utilise des annotations pour le mapping. Mais le souci, c'est qu'il n'a pas mis à jour la table dans la base de données après le merge. J'ai vérifié l'objet de produit avant et après le merge, les propriétés de mon objet contiennent bien chacune une valeur.
Je ne comprends pas pourquoi le merge ne fonctionne pas et je n'ai rien comme l'erreur...
Si quelqu'un entre vous a rencontré le même problème et/ou vous avez des pistes pour m'éclairer, n'hésite pas à poster, c'est très urgent.
Je suis dispo pour tous les éléments complémentaires (les codes etc.) si vous souhaitez.
en attendant, je vous en remercie par avance.


Top
 Profile  
 
 Post subject: Re: [urgent] le merge ne fontionne pas
PostPosted: Tue Jun 01, 2010 11:53 am 
Newbie

Joined: Thu Feb 12, 2009 12:44 pm
Posts: 4
Bonjour,

Peux-tu en dire plus sur environnement que tu utilise ?

Un merge n'aura pas d'effet en base si tu n'est pas dans un contexte transactionnel par exemple.


Top
 Profile  
 
 Post subject: Re: [urgent] le merge ne fontionne pas
PostPosted: Wed Jun 02, 2010 5:22 am 
Newbie

Joined: Tue Jun 01, 2010 10:53 am
Posts: 3
Bonjour,
Je te remercie d’abord pour ta réponse.
Mon application est développée en utilisant le framework spring et hibernate.
Mon dao est instancié dans le fichier d’application contexte du spring.
Mon entité bean a des propriétés suivantes :
Code:
@SuppressWarnings("serial")
@Entity()
@Table(name = "produit")
public class Produit implements Serializable {
    @Id()
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id_produit")
    private int id;

    @Length(max = 10)
    @Column(nullable = false, unique = true)
    private String reference;

    @Length(max = 255)
    @Column(nullable = true)
    private String image;
   
    @Length(max = 255)
    @Column(nullable = false)
    private String nom;
    //….. les getters et setters des propriétés.
}

Dans mon Dao, j’ai une fonction qui permet de mettre à jour mon produit, cette fonction est développée comme suivante
Code:
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public Produit enregistrer(Produit produit) {
//.........
    try {
   if (produit.getId() == 0) {
       em.persist(produit);
   } else {
       produit = em.merge(produit);
   
   }
    } catch (Exception e) {
log.error("impossible enregistrer le produit : " + produit.getReference(), e);
    }
//.........
    return produit;
}

Cette fonction est appelée lors d’un import des produits à partir d’un fichier XML. Dans ce dernier, il y a plus de 1000 produits à importer. Le merge fonctionne pour certain produit et non pas tous les produits. J’ai testé un produit seul dans le fichier XML, n’ayant pas été mis à jour dans la base de données, le merge fonctionne et met bien à jour mon objet dans la base de données. Puis, 10 produits et 100 produits, le merge fonctionne toujours bien. Je passe à plus de 1000 produits, le merge ne fonctionne que pour certain produit. Pourtant, j’ai loggué mes objets avant et après le merge, les propriétés contiennent bien une valeur.
N’hésite pas à me poser d’autres questions si tu en as, si jamais ma réponse n’est pas suffisante.


Top
 Profile  
 
 Post subject: Re: [urgent] le merge ne fontionne pas
PostPosted: Wed Jun 02, 2010 5:32 am 
Newbie

Joined: Tue Jun 01, 2010 10:53 am
Posts: 3
j'ai oublié une ligne suivante qui se trouve après le catch
Code:
em.flush();

A Noter: em est déclaré de cette manière dans mon dao
Code:
@PersistenceContext()
protected EntityManager em;


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.