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

Flex Discussion :

Hibernate flex fds


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 2
    Par défaut Hibernate flex fds
    Bonjour,

    Je cherche le moyen d'effectuer une insertion dans deux tables différentes avec FSDS et hibernate.

    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
    class Livre {
     
    public var idLivre:Number;
    public var libelle:String;
    public var arrayAuteur:ArrayCollection;
     
    public Livre ();
    }
     
    class Auteur {
     
    public var idAuteur:Number;
    public var livre:Livre;
    public var nom:String;
    public Auteur();
     
    public setLivre(livre:Livre){
    this.livre=livre;
    }
    }
    J'utilise HibernateAssembler. Du coté java j'ai le même type de classe. Actuellement je fait de cette manière :

    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
    var livreDS:DataSource;
    var auteurDS:DataSource;
    var itemLivre:ItemReference;
     
    public function init() {
    livreDS = new DataSource("livre");
    livreDS.addEventListener(MessageFaultEvent.FAULT, faultHandler);
    livreDS.addEventListener(MessageEvent.RESULT, resultHandler);
    livreDS.addEventListener(DataConflictEvent.CONFLICT, conflictHandler);
    livreDS.autoCommit = false;
     
    auteurDS = new DataSource("auteur");
    auteurDS.autoCommit = false;
    }
     
    public function resultHandler(e:ResultEvent) {
     
    // Objet du livre nouvellement créé
    var livre:Livre = itemlivre.result as Livre
    AuteurModele.setLivre(livre);
    auteurDS.createItem(AuteurModel);
    auteurDS.commit();
    }
     
    public function ajouter() {
    itemLivre = livreDS.createItem(LivreModele);
    livreDS.commit();
    }
    Problème de cette méthode est que je fait d'abord un commit du livre puis je commit les auteurs. Du coup si un auteur plante je n'ai pas de rollback du livre (ce que je souhaiterait). Et si je charge la liste de mes auteurs dans mon livre alors Hibernate m'effectue un insert pour le livre, mais des update pour les auteurs (alors que mes auteurs n'existent pas dans mon cas). Avez vous une idée pour effectuer une insertion en un seul coup des deux objets (Livre et Auteur)?

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    Salut,


    Déjà utilise la balise code pour afficher tes sources sinon c'est illisible

    et pour ton problème, as tu pensé a revoir le schéma de ta base? Avoir une bdd qui soit adaptée a tes besoins c'est la clé

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 38
    Par défaut
    Date d'inscription: décembre 2002
    Messages: 1
    Il a fini par craquer

    Sinon, quand tu dis que Hibernate fait un update de tes auteurs, il ne te les insère donc pas ? Pour ma part, j'utilise la fonction merge(entity) de l'EntityManager, et il me fait soit un update soit un insert en fonction de ce qu'il trouve dans la base.

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 2
    Par défaut [Résolu]
    En fait avec flex mes identifiants sont instanciés. A savoir idLivre est mappé avec un integer coté java. Du coup lorsque j'envoie à hibernate mon objet, il voit mon identifiant comme un objet et donc effectue un update. J'ai donc mis un unsaved-value="0" dans mon hbn pour que tout objet avec un id de 0 m'effectue un insert.

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

Discussions similaires

  1. Flex, Tomcat, Spring et Hibernate
    Par bootprog dans le forum Flex
    Réponses: 4
    Dernier message: 08/04/2010, 12h43
  2. Flex & Java (Hibernate/Spring/MySQL)
    Par ChristopheD dans le forum Flex
    Réponses: 2
    Dernier message: 19/03/2010, 11h35
  3. [Integration] Projet Maven : Hibernate, Spring, Flex et BlazeDS
    Par smh_master dans le forum Spring
    Réponses: 2
    Dernier message: 09/03/2010, 11h04
  4. Réponses: 1
    Dernier message: 20/02/2010, 19h38
  5. combinaison de Flex Struts, Spring et Hibernate
    Par wafi.ka dans le forum Flex
    Réponses: 2
    Dernier message: 30/06/2008, 20h34

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