Mehdiing wrote:
Bonjour,
J'essaye d'insérer dans la base avec une boucle for mais j'obtient l'erreur ci-dessus que j'annirve pas à résoudre
try
{
for (int i = 0; i < this.Entries.size(); i++)
{
Entry = (SyndEntryImpl)this.Entries.get(i);
//this.article.setLink(Entry.getLink());
this.article.setLink("Entry"+i+"");//.getLink());
this.article.setDescription(Entry.getDescription().getValue());
this.article.setTitle(Entry.getTitle());
//this.article.setSiteRSS(RSSFlux.GetFluxRSS());
//On sauve
this.session.save(article);
}
//Nous commitons la transaction vers la base
this.transaction.commit();
}
catch(Exception ex)
{
ex.printStackTrace ();
}
[code]
Full stack trace of any exception that occurs:
[code]
org.hibernate.HibernateException: identifier of an instance of com.wizhelp.wizrss.Base.ArticleRSS was altered from Entry0 to Entry9
at org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlu[/code]
le message d'erreur est très clair : vous changez le champ "id" (càd la primary key) d'un objet déjà persisté…
du message d'erreur ("altered from Entry0 to Entry9") on déduit que la ligne qui cause l'erreur est
[code]
this.article.setLink("Entry"+i+"");
[/code]
et si l'on regarde votre boucle vous modifiez "this.Entries.size()" fois le même objet "this.article"…
si vous voulez persistez des objets "article" différents, vous devriez faire un "new article" à chaque passage dans la boucle…