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 :

Capacité d' Hibernate


Sujet :

Hibernate Java

  1. #1
    Invité
    Invité(e)
    Par défaut Capacité d' Hibernate
    Simple question que je me pose, et à laquelle je ne trouve pas de réponses. Peut-être car j'ai du mal à formuler une recherche correcte..

    J'ai un objet 'Group' qui contient un Set d'objets 'Article' et que chaque article à une référence au groupe auquel il appartient.

    Si je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Article article1 = new Article("Article 1");
    Article article2 = new Article("Article 2");
    Group groupe = new Groupe("Mon groupe");
    groupe.addArticle(article1);
    groupe.addArticle(article2);
    article1.setGroup(groupe);
    article2.setGroup(groupe);
     
    session.save(groupe);
    Hibenate est-il censé l'accepter ?
    Si oui, tant mieux, si non comment devrais-je procéder et à quoi dois-je penser en codant mes objets Groupe et Article ? (Hormis les recommendations d'Hibernate sur l'utilisation d'interfaces pour les collections)

    MERCI

    Je sais que l'on risque de me répondre d'aller voir sur Google mais comme dis au début je ne trouve pas de réponses directe à ma question et j'ai passé 4 jours à tenter de faire quelque chose du genre sans résultats satisfaisant..

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Cà marche à condition que, dans ton mapping, tu aie mentionné pour le mapping groupe -> article un "cascade=insert". Ainsi, quand tu sauve le groupe, les entitées liées au groupe sont aussie sauvée.

    Mis à part çà, c'est une bonne manière de faire que tu as choisi.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Super ! Merci pour l'info. Ca me remotive un peu.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Wai bon, ça me motive déja beaucoup moins :

    Caused by: org.hibernate.MappingException: Unsupported cascade style: insert
    at org.hibernate.engine.CascadeStyle.getCascadeStyle(CascadeStyle.java:269)
    at org.hibernate.mapping.Property.getCascadeStyle(Property.java:95)
    at org.hibernate.tuple.PropertyFactory.buildStandardProperty(PropertyFactory.java:132)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:171)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1198)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1167)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:285)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:124)
    at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:68)
    at test.TestDao.main(TestDao.java:50)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon en mettant cascade="all" ça passe (marche pas mais passe; j'ai une autre exception)

  6. #6
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    C'est cascade="save"

    Pour le mapping bidirectionnel => http://www.hibernate.org/hib_docs/v3...-bidirectional

  7. #7
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Ca serait pas plutot save ?

    Edit: Méga grilled

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ha, je ne sais pas j'ai suivis ce tuto : http://www.hibernate.org/hib_docs/v3...rentchild.html et j'ai mis cascade="all"

    Merci à vous deux.

    Mais alors, c'est quoi la différence entre cascade="all" et cascade="save" ?

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par Pollux Voir le message
    C'est cascade="save"
    Oops désolé

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par Blaise1 Voir le message
    Mais alors, c'est quoi la différence entre cascade="all" et cascade="save" ?
    For each basic operation of the Hibernate session - including persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate() - there is a corresponding cascade style. Respectively, the cascade styles are named create, merge, save-update, delete, lock, refresh, evict, replicate.
    et tout naturellement, all=tout ceux là en même temps

Discussions similaires

  1. [Système] Connaitre la capacité d'un disque dur et l'espace libre
    Par sebastakis dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 03/12/2007, 11h48
  2. [Plugin] Hibernate
    Par speedster dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/08/2004, 11h01
  3. depassement de capacité
    Par jpg dans le forum ASP
    Réponses: 2
    Dernier message: 19/08/2004, 18h26
  4. Fonctionnement d'Hibernate
    Par coyot dans le forum Hibernate
    Réponses: 12
    Dernier message: 19/05/2004, 19h10
  5. [JDO]Hibernate : Mapping d'un champ auto-incrémenté
    Par brice.antoine dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/04/2004, 10h36

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