-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: subclass -> join -> set -> erreur !!!
PostPosted: Wed Jun 25, 2008 12:10 pm 
Newbie

Joined: Tue Jun 24, 2008 6:42 am
Posts: 19
Bonjour a tous, voila le <join... que j'ai mis en rouge me pose un problème, il me dit : The content of element type "join" must match "(subselect?,comment?,key,(property|many-to-one|
component|dynamic-component|any)*,sql-insert?,sql-update?,sql-delete?)".

quelqu'un airait-il une idée car la je bloque ! merci d'avance

Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 24 juin 2008 18:25:54 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="test.Node" table="node" catalog="nod">
        <id name="idFils" type="string">
            <column name="id_fils" length="10" />
        </id>
               
        <discriminator column="type" type="string"/>
   
        <property name="idPere" type="string">
            <column name="id_pere" length="10" not-null="true" />
        </property>
       
     
       <subclass name="test.Root" discriminator-value="Root">

<join table="root">
<set name="Fils">
<key column="id_pere"/>
<one-to-many class="test.Node"/>
</set>
</join>
Code:
       </subclass>
       
    </class>
</hibernate-mapping>


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 25, 2008 3:23 pm 
Regular
Regular

Joined: Mon Apr 19, 2004 6:54 pm
Posts: 79
essai de mettre l'element <key> en premiere position du <join>

Code:
<join table="root">
   <key column="id_pere"/>
   <set name="Fils">
      <one-to-many class="test.Node"/>
   </set>
</join>


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 26, 2008 3:21 am 
Newbie

Joined: Tue Jun 24, 2008 6:42 am
Posts: 19
Non, ça ne peut pas marcher, ce n'est pas une structure correcte que tu me propose mais merci quand même d'avoir essayé


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 26, 2008 3:28 pm 
Regular
Regular

Joined: Mon Apr 19, 2004 6:54 pm
Posts: 79
Ta structure non plus n'est pas correcte d'apres le message d'erreur.

Code:
(subselect?,comment?,key,(property|many-to-one|
component|dynamic-component|any)*,sql-insert?,sql-update?,sql-delete?)


Code:
<join table="root">
<set name="Fils">
<key column="id_pere"/>
<one-to-many class="test.Node"/>
</set>
</join>


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 08, 2009 5:37 am 
Newbie

Joined: Wed Aug 13, 2008 6:09 am
Posts: 4
Ca a été posté il y a un bout de temps, mais au cas où ca intéresserait encore du monde voilà la raison du problème: On ne peu pas définir de collection dans un <join> que ce soit un set, un bag, une map ou autre (cf. la dtd de l'hibernate mapping).

La solution pour avoir une classe fille qui puisse déclarer une collection est de la mapper avec <joined-subclass> plutot que l'association <subclass><join>. Bien evidement il y a des limitations à cela, sinon ca ne serait pas drôle. L'emploi de <joined-sublass> t'interdira d'avoir une gestion mixte de ton héritage en BDD (une table par classe fille, et certaines dans autre dans la table "mère" (à moins qu'un join vers la même table puisse marcher....). De plus l'emploi de <joined-sublasse> interdit l'emploi du tag <join> en fils direct du de l'element <class>, ce qui peut être gênant si la classe mère va chercher une de ses propriétés dans une autre table.
Pour palier ce problème reste les <subselect> mais là j'y connais pas grand chose, notamment comment inséré la clause where qui dit à notre jointure de sélectionner la ligne qui se rapporte à l'id de l'objet en train d'être chargé...sans compté que ca nous en fait une variable Read-only.....


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 08, 2009 5:55 am 
Newbie

Joined: Wed Aug 13, 2008 6:09 am
Posts: 4
'tit up, en faite pour avoir un set dans une classe fille en utilisant un mapping du style <subclass><join></join></subclass> et bien il suffit de déclarer son set en dehors du tag <join> comme suit:

Code:
<subclass>
   <set>
        <key/>
        <machin-to-many>
    </set>
   <join>
       <key/>
    </join>
</subclass>


Top
 Profile  
 
 Post subject:
PostPosted: Tue Feb 24, 2009 7:06 pm 
Newbie

Joined: Wed May 18, 2005 3:02 pm
Posts: 18
Ashcrow wrote:
'tit up, en faite pour avoir un set dans une classe fille en utilisant un mapping du style <subclass><join></join></subclass> et bien il suffit de déclarer son set en dehors du tag <join> comme suit:

Code:
<subclass>
   <set>
        <key/>
        <machin-to-many>
    </set>
   <join>
       <key/>
    </join>
</subclass>


For the english speakers in the audience (I found this via google and it seems to be the only solution to the problem in google)...

When using a join subclass, one-to-many relations don't actually require changes to the schema on the one side, since the id of the one side is added to the many side of the relation. As such, the
Code:
<join>
tag will not even accept the various collection tags (bag, set, list, etc) as children. Instead, any property which isn't reflected in the schema of the subclass should be defined within the subclass element, but outside the join element. Additionally, it turns out that the join element must come after the properties defined outside of the join element.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.