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

Java EE Discussion :

[XDoclet][JBoss] CMR - Many to Many Relation


Sujet :

Java EE

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 37
    Points
    37
    Par défaut [XDoclet][JBoss] CMR - Many to Many Relation
    Salut

    Je cherche à faire le mapping d'une relation many-to-many avec une table relationnelle ayant un champ supplémentaire (en plus du couple de clefs correspondant aux tables jointes).

    Pour l'instant, j'ai fait une jointure simple :

    Coté Pile :
    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
        /**
         * @ejb.interface-method view-type="local"
         * 
         * @jboss.relation-mapping style="relation-table" 
         * @jboss.relation-table   table-name="t_Pile_Face"
         *                            create-table="false"
         *                            remove-table="false"
         * 
         * @ejb.relation name="Pile-Face"
         *               role-name="Pile-has_many-Face"
         *               target-multiple="yes"
         * 
         * @jboss.relation fk-column="k_Face"
         *                 related-pk-field="id"
         *                    fk-constraint="false"
         * 
         * @return A Collection of Face
         */
        public abstract Collection getFaces();
     
        /**
         * @ejb.interface-method view-type="local"
         * 
         * @param faces A Collection of Face
         */
        public abstract void setFaces(Collection faces);
    Coté Face :
    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
     
        /**
         * @ejb.interface-method view-type="local"
         * 
         * @ejb.relation name="Pile-Face"
         *               role-name="Face-has_many-Pile"
         *               target-multiple="yes"
         * 
         * @jboss.relation fk-column="k_Pile"
         *                 related-pk-field="id"
         *                    fk-constraint="false"
         * 
         * @return A Collection of Pile
         */
        public abstract Collection getPiles();
     
        /**
         * @ejb.interface-method view-type="local"
         * 
         * @param piles A Collection of Pile
         */
        public abstract void setPiles(Collection piles);
    Donc ma table de jointure est t_Pile_Face(k_Pile, k_Face)

    Je voudrais obtenir quelque chose comme cela : t_Pile_Face(k_Pile, k_Face, k_Time) en relation "toute clef"

    Est ce que cela est possible sans créer un autre Entity Bean CMP ?

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    finalement j'ai donc créé un 3ème entity bean avec clef composé, ça tourne

    si quelqu'un veut des renseignements sur ce point, y a pas de p

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut merci pour plus d'informations
    j'aimerais bien savoir des details de ce que tu as fait,car j'ai le meme probleme
    merci d'avavce.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    bonjour,

    pour faire un ejb cmp avec clef composé il ne faut pas définir de "primkey-field" mais générer une classe PK (avec xdoclet).
    Après, tu fais des relations One to many pour relier les 3 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    /**
     * Entity Bean CMP for Pile_Face (with xdoclet tags).
     * 
     * @author Personne d'autre que moi meme
     * @version 1.0
     * 
     * @ejb.bean name="Pile_Face"
     *              display-name="Name for Pile_Face"
     *           type="CMP"
     *           cmp-version="2.x"
     *           reentrant="false"
     *           
     *           view-type="local"
     *           local-jndi-name="ejb/Pile_Face"
     *           
     *           schema="Pile_FaceSchema"
     *           
     * @ejb.pk generate="true"
     * @jboss.entity-command name="default" class="org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand"
     * 
     * @ejb.persistence table-name = "t_Pile_Face"
     * 
     * @ejb.transaction type="Required"
     * 
     * @ejb.finder  
     *                 signature="Collection findByPile(java.lang.Integer pile)"
     *                 query="SELECT OBJECT(pile_face) FROM Pile_FaceSchema pile_face WHERE pile_face.pile = ?1"
     *                 unchecked="true"
     *                 result-type-mapping="Local"
     * 
     * @ejb.finder  
     *                 signature="Collection findByFace(java.lang.Integer face)"
     *                 query="SELECT OBJECT(pile_face) FROM Pile_FaceSchema pile_face WHERE pile_face.face = ?1"
     *                 unchecked="true"
     *                 result-type-mapping="Local"
     * 
     * @ejb.finder  
     *                 signature="java.util.Collection findAll()"
     *                 query="SELECT OBJECT(pile_face) FROM Pile_FaceSchema pile_face"
     *                 unchecked="true"
     *                 result-type-mapping="Local"
     *
     * @ejb:util generate="physical"
     * 
     */
    public abstract class Pile_FaceBean implements EntityBean {
     
        /** The entity context */
        private EntityContext context = null;
     
        /**
         * Creation method comment : composite primary key
         * 
         * @ejb.create-method view-type="local"
         * 
         * @param pile
         * @param face
         * @param time
         * @return Primary Key
         * @throws CreateException
         */
         public Pile_FacePK ejbCreate(Integer pile, Integer face, Date time) throws CreateException {
             setPile(pile);
             setFace(face);
             setTime(time);
             return null;
         }
     
         public void ejbPostCreate(Integer pile, Integer face, Date time) throws CreateException {
         }
     
     
        /**
         * @ejb.interface-method view-type="local"
         */
        public abstract Pile_FacePK getPK();
     
     
        /**
        * @ejb.interface-method view-type="local"
        * @ejb.pk-field
        * @ejb.persistence column-name="k_Pile"
        * 
        * @return Pile ID
        */
        public abstract Integer getPile();
     
        /**
         * @ejb.interface-method view-type="local"
         * 
         * @param pile Pile ID
         */
        public abstract void setPile(Integer pile);
     
    //...
    je ne connais pas de solution plus élégante....

    bye

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 37
    Points : 26
    Points
    26
    Par défaut EJB cmp& association
    merci dauggui por le code.

Discussions similaires

  1. [EJB2.1 Entity] Xdoclet et Relation Many to Many
    Par zineb_cerisette dans le forum Java EE
    Réponses: 0
    Dernier message: 03/08/2011, 23h12
  2. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 19h50
  3. HQL - relation many-to-many
    Par Foub dans le forum Hibernate
    Réponses: 2
    Dernier message: 17/02/2007, 13h06
  4. Réponses: 3
    Dernier message: 05/01/2007, 11h44
  5. [hibernate]relation many-to-many
    Par quilo dans le forum Hibernate
    Réponses: 5
    Dernier message: 20/12/2005, 11h07

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