PDA

View Full Version : [Java] - Primi passi hibernate


Abdujaparov
04-04-2009, 18:31
Ciao a tutti,
sto cercando di capire come funziona hibernate e volevo chiedervi una cosa.
Seguendo il tutorial, sul sito di hibernate, sto cercando di caricare una lista di elementi (Giocatore). Ora vorrei inserire tutti gli utenti in blocco e fare il commit solo alla fine dopo aver caricato tutti gli elementi.
Ho provato a scrivere il codice in questo modo:

public void inserisciGiocatori(List<Giocatore> giocatori){

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

Iterator<Giocatore> i = giocatori.iterator();

System.out.println("Sto iniziando ad inserire i giocatori.....");

while(i.hasNext()){
Giocatore g = i.next();


session.save(g);

}


session.getTransaction().commit();

System.out.println("Inserimento terminato!");

}

Solo che mi viene generato questo errore:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session

Come posso risolvere?
Grazie a tutti, ciao ciao.

gokan
05-04-2009, 11:57
Come hai scritto la classe Giocatore?
Controlla che abbia un campo mappato come id. Se usi le annotation, piuttosto che i file xml di mapping puoi vedere qui:

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#entity-mapping

Ciao

Abdujaparov
05-04-2009, 12:00
La classe è mappata tramite file xml in questo modo:


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="player">
<class name="Giocatore" table="giocatore">

<id name="id" type="long" column="id"></id>
<property name="ruolo" type="string" column="ruolo"></property>
<property name="cognome" type="string" column="cognome"></property>
<property name="nome" type="string" column="nome"></property>
<property name="squadraA" type="string" column="squadraA"></property>

</class>
</hibernate-mapping>



Credo di averlo impostato correttamente come id, o sbaglio?

Grazie, ciao ciao.

stevenen
18-04-2009, 17:39
sicuramente hai dei giocatori con lo stesso id, controlla..