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 :

Debutant probleme many to one


Sujet :

Hibernate Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Debutant probleme many to one
    slt j'ai un probleme avec le many to one voici mes classes:
    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
    package contexte;
     
    public class Ecole {
    private int id;
    private String nom;
    public Ecole() {
    	super();
    }
    public Ecole(String nom) {
    	super();
    	this.nom = nom;
    }
    public int getId() {
    	return id;
    }
    public void setId(int id) {
    	this.id = id;
    }
    public String getNom() {
    	return nom;
    }
    public void setNom(String nom) {
    	this.nom = nom;
    }
     
    }
    classe etudiant:
    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
    30
    31
    32
    33
    34
    35
    36
     
    package contexte;
     
    public class Etudiant {
    	private int id;
    	private String nom;
    	private Ecole ecole;
    	public Etudiant() {
    		super();
    	}
    	public Etudiant(String nom, Ecole ecole) {
    		super();
    		this.nom = nom;
    		this.ecole = ecole;
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public Ecole getEcole() {
    		return ecole;
    	}
    	public void setEcole(Ecole ecole) {
    		this.ecole = ecole;
    	}
     
     
    }
    les fichiers xml de l'etudiant
    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
    <?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="contexte">
        <class name="Etudiant" table="ETUDIANT">
            <meta attribute="class-description">This class contains the student's address
                details.</meta>
            <id name="id" type="int" column="ETU_ID">
                <generator class="native" />
            </id>
            <property name="nom" column="ETU_NOM" type="string" length="250" />
            <many-to-one name="id" class="Ecole" not-null="true"></many-to-one>
        </class>
    </hibernate-mapping>
    le fichier xml de l'ecole:
    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
    <?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="contexte">
        <class name="Ecole" table="ECOLE">
            <meta attribute="class-description">This class contains the student's address
                details.</meta>
            <id name="id" type="int" column="ECO_ID">
                <generator class="native" />
            </id>
            <property name="nom" column="ECO_NOM" type="string" length="250" />
     
     
        </class>
    </hibernate-mapping>
    la classe ManageSession:
    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
    package Session;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
     
    	public class ManageSession {
    		private static Session session;
    		private static SessionFactory sf;
    		private ManageSession()
    		{
    		 sf = new Configuration().configure().buildSessionFactory();
    		sf.openSession();
    		}
     
    		public static Session getInstance(){
    			if(session==null)
    			{
    				new ManageSession();
    				session =sf.getCurrentSession();
    				return session;
    			}
    			else 
    				return session;
    		}
    	}
    la classe test:
    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
    30
    31
    32
    33
    34
    package contexte;
     
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
    import Session.ManageSession;
     
    public class Test {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		Session ss=ManageSession.getInstance();
    		Transaction tx=null;
    		try
    		{
    		tx=ss.beginTransaction();
    		Ecole e1 =new Ecole("e");
    		Etudiant e=new Etudiant("hh",e1);
     
     
    		ss.save(e);
    		tx.commit();
     
    		} catch (HibernateException e) {
                tx.rollback();
                e.printStackTrace();
            } finally {
                ss.close();
            }
    }
    }
    le fichier xml de configuration hibernate.cfg.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
    22
    23
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.password">root</property>
            <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/base</property>
            <property name="hibernate.connection.username">root</property>
     
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
     
            <property name="hbm2ddl.auto">create</property>		
    <property name="hibernate.show_sql">true</property>	
    	<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
    		<property name="current_session_context_class">thread</property>
     
     
    	<mapping resource="contexte/Etudiant.hbm.xml"/>
    	<mapping resource="contexte/Ecole.hbm.xml"/>
    			</session-factory>
    		</hibernate-configuration>
    apres l'execution il me genere ces erreurs :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
    log4j:WARN Please initialize the log4j system properly.
    org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of contexte.Ecole.id
    	at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:195)
    	at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:199)
    	at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3605)
    	at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3321)
    	at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:204)
    	at org.hibernate.engine.ForeignKeys$Nullifier.isNullifiable(ForeignKeys.java:160)
    	at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:92)
    	at org.hibernate.engine.ForeignKeys$Nullifier.nullifyTransientReferences(ForeignKeys.java:70)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:311)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
    	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
    	at $Proxy0.save(Unknown Source)
    	at contexte.Test.main(Test.java:24)
    Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:169)
    	... 25 more
    Exception in thread "main" org.hibernate.SessionException: Session was already closed
    	at org.hibernate.impl.SessionImpl.close(SessionImpl.java:303)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
    	at $Proxy0.close(Unknown Source)
    	at contexte.Test.main(Test.java:31)

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2002
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 38
    Points : 33
    Points
    33
    Par défaut
    Je pense que tu as un souci dans ton mapping de la classe Etudiant :

    <many-to-one name="ecole" class="Ecole" not-null="true"></many-to-one>
    sicard_51, la bonne brioche anisée !

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    merci oui effectivement j'ai modifie le nom de l'attribut et le programme a fonctionné

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

Discussions similaires

  1. Probleme many to one
    Par amal_noussair dans le forum Hibernate
    Réponses: 1
    Dernier message: 19/09/2008, 14h13
  2. Hibernate many-to-one probleme id
    Par grizzz dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/09/2008, 14h36
  3. [DEBUTANT] many-to-one erreur de mapping ?!
    Par zybay dans le forum Hibernate
    Réponses: 7
    Dernier message: 14/05/2007, 14h56
  4. [Debutant] absence des one-to-many et many-to-one
    Par tck-lt dans le forum Hibernate
    Réponses: 2
    Dernier message: 15/12/2006, 12h33
  5. Réponses: 2
    Dernier message: 17/07/2006, 14h45

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