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 :

[hibernate] many-to-one not-null property


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Par défaut [hibernate] many-to-one not-null property
    Bonjours,
    j'utilise hibernate synchronizer
    et j'ai une relation parent enfant.
    Je suis étonné de voir que les méthode YY.addToXX()
    ne definissent pas la valeur de la clef étrangère.

    j'ai l'erreur suivante
    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
     
    Exception in thread "main" org.hibernate.PropertyValueException: not-null property references a null or transient value: test.hibernate.InfPlatform.InfHostingsite
    	at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
    	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
    	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
    	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
    	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
    	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
    	at test.test.Test1.createAndStoreSite(Test1.java:46)
    	at test.test.Test1.main(Test1.java:23)


    Un hosting site peut contenir plusieurs platform et une platforme est lié OBLIGATOIREMENT à un seul site.

    dans site j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<set name="InfPlatform" inverse="true">
            <key column="`vs_objectUID`"/>
            <one-to-many class="InfPlatform"/>
        </set>
    et dans platforme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		<many-to-one
    			name="InfHostingsite"
    			column="`inf_hostingSiteUID`"
    			class="InfHostingsite"
    			not-null="true"
     
    		>
    		</many-to-one>


    dans basehostingsite.java
    j'ai ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	public void addToInfPlatform (test.hibernate.InfPlatform infPlatform) {
    		if (null == getInfPlatform()) setInfPlatform(new java.util.TreeSet<test.hibernate.InfPlatform>());
    		getInfPlatform().add(infPlatform);
    	}


    et ma main ressemble à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Session session = HibernateUtil.currentSession();
     
            Transaction tx = session.beginTransaction();
         InfPlatform infPlatform = new InfPlatform();
            infPlatform.setInfName("platsyl"+(new Random()).nextInt());
            infPlatform.setInfDescription("test");
            InfHostingsite site1 = (InfHostingsite)session.load(InfHostingsite.class, 3149);
            site1.addToInfPlatform(infPlatform);
            //Set<InfPlatform> s = site1.getInfPlatform();
            session.save(infPlatform);
    tx.commit();

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 12
    Par défaut
    Ton problème ressemble au mien que j'ai pu résoudre hier. Dans ta méthode addToInfPlatform il faudrait essayer de lier le infPlatform avec le site en ajoutant la dernière ligne de ton code que j'ai repris avec u truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void addToInfPlatform (test.hibernate.InfPlatform infPlatform) {
    if (null == getInfPlatform()) setInfPlatform(new java.util.TreeSet<test.hibernate.InfPlatform>());
    getInfPlatform().add(infPlatform);
    infPlatForm.setInfHostingsite(this);
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Par défaut
    Merci.

    ok ca me semble correcte , c'est ce dont j'avais peur.
    Mais du coup il ya d'autre chose à géréer comme par exemple quand on supprime un objet.
    Je croyait que Hibernate savais gérer ces petit problème tout seul! Ou au moins le plugin hibernate synchroniser.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/12/2010, 11h46
  2. Réponses: 6
    Dernier message: 29/11/2010, 16h09
  3. Hibernate many-to-one probleme id
    Par grizzz dans le forum Hibernate
    Réponses: 1
    Dernier message: 10/09/2008, 14h36
  4. html:select et hibernate many-to-one
    Par davdou dans le forum Struts 1
    Réponses: 1
    Dernier message: 05/07/2006, 14h56
  5. [hibernate] "many-to-one"
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 26
    Dernier message: 12/05/2006, 20h11

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