I don't know if this is related to your issue, but as an FYI you might
want to read through this thread.
On 8/20/07, Jens Mayer <jens.mayer..mx.de> wrote:
> Hi,
>
> I'm trying to build a tree-like structure based on data in my db.
>
> My table TMP_TRANSEDIT has a relationship to itself:
>
> TMPTRANSEDIT_ID NUMBER(10) is the PK ... and
> TMPTRANSEDIT_TMPTRANSEDIT_ID NUMBER(10) is used for the relationship to
> the parent.
>
> The tabledata is inserted by two queries, first the insert-query for the
> rows and afterwards an update-query to set the parent/child relationship.
> After that, all modifications are committed.
>
> Now I'm querying each node (in the same DataContext I used for the
> inserts/updates), starting with the root-tier
> (TMPTRANSEDIT_TMPTRANSEDIT_ID is null)
>
> Upto this point all is working fine.
>
> But now I'm trying to read the childs for each rootnode (triggered by
> the user expanding the related node in the GUI). I'm using the
> ObjectRelationship toTmpTranseditArray which should contain the
> child-DataObjects for each given rootnode. But the List returned by the
> getToTmpTranseditArray()-Method is empty. The logging shows that after
> the rootnodes-query there is no further query performed.
>
> Am I wrong with my approach? Or do I have to consider something special
> to Cayenne? One possible solution is to query the childs for each node
> manually by using a new SelectQuery, but this doesn't seem to be the
> best practice to me...
>
> Below I added the code of the child-query and the mapping from the
> map.xml concerning the TMP_TRANSEDIT-Table.
>
> I'm using Cayenne 2.0.2, JDK 1.5.0_10 and Oracle 10.2.0.3.0.
>
> Thanks in advance,
>
> Jens
>
> This the code of my child-query:
>
> public boolean hasChildren(Object element) {
> TmpTransedit trans = (TmpTransedit)element;
> List children = trans.getTmpTranseditArray();
> int size = children.size();
> return size>0;
> }
>
> This is the mapping for the DB-Table:
> <db-entity name="TMP_TRANSEDIT">
> <db-attribute name="ERROR_CODE" type="INTEGER" length="5"/>
> <db-attribute name="IDENT_KEY" type="VARCHAR" length="30"/>
> <db-attribute name="IDENT_NAME" type="VARCHAR" length="40"/>
> <db-attribute name="KNZ_REAKTION" type="VARCHAR" length="1"/>
> <db-attribute name="MACHINE_NAME" type="VARCHAR" length="50"/>
> <db-attribute name="SATZART" type="VARCHAR" isMandatory="true"
> length="20"/>
> <db-attribute name="SENDATEI_SENDATEI_ID" type="INTEGER" length="10"/>
> <db-attribute name="TMPTRANSEDIT_ID" type="INTEGER"
> isPrimaryKey="true" isMandatory="true" length="10"/>
> <db-attribute name="TMPTRANSEDIT_TMPTRANSEDIT_ID" type="INTEGER"
> length="10"/>
> <db-attribute name="USER_NAME" type="VARCHAR" length="50"/>
> <db-key-generator>
> <db-generator-type>ORACLE</db-generator-type>
> <db-generator-name>TMPTRANSEDIT_SEQ</db-generator-name>
> <db-key-cache-size>1</db-key-cache-size>
> </db-key-generator>
> </db-entity>
>
> ... the ObjectEntity
> <obj-entity name="TmpTransedit"
> className="de.edeka.ebus.dc.db.TmpTransedit" dbEntityName="TMP_TRANSEDIT">
> <obj-attribute name="errorCode" type="java.lang.Integer"
> db-attribute-path="ERROR_CODE"/>
> <obj-attribute name="identKey" type="java.lang.String"
> db-attribute-path="IDENT_KEY"/>
> <obj-attribute name="identName" type="java.lang.String"
> db-attribute-path="IDENT_NAME"/>
> <obj-attribute name="knzReaktion" type="java.lang.String"
> db-attribute-path="KNZ_REAKTION"/>
> <obj-attribute name="machineName" type="java.lang.String"
> db-attribute-path="MACHINE_NAME"/>
> <obj-attribute name="satzart" type="java.lang.String"
> db-attribute-path="SATZART"/>
> <obj-attribute name="userName" type="java.lang.String"
> db-attribute-path="USER_NAME"/>
> </obj-entity>
>
> ... the db-relationships
> <db-relationship name="tmpTranseditArray" source="TMP_TRANSEDIT"
> target="TMP_TRANSEDIT" toMany="true">
> <db-attribute-pair source="TMPTRANSEDIT_ID"
> target="TMPTRANSEDIT_TMPTRANSEDIT_ID"/>
> </db-relationship>
>
> <db-relationship name="toSenDateien" source="TMP_TRANSEDIT"
> target="SEN_DATEIEN" toMany="false">
> <db-attribute-pair source="SENDATEI_SENDATEI_ID" target="SENDATEI_ID"/>
> </db-relationship>
>
> <db-relationship name="toTmpAttreditArray" source="TMP_TRANSEDIT"
> target="TMP_ATTREDIT" toMany="true">
> <db-attribute-pair source="TMPTRANSEDIT_ID"
> target="TMPTRANSEDIT_TMPTRANSEDIT_ID"/>
> </db-relationship>
>
> <db-relationship name="toTmpTransedit" source="TMP_TRANSEDIT"
> target="TMP_TRANSEDIT" toMany="false">
> <db-attribute-pair source="TMPTRANSEDIT_TMPTRANSEDIT_ID"
> target="TMPTRANSEDIT_ID"/>
> </db-relationship>
>
> ... and the obj-relationships
> <obj-relationship name="tmpTranseditArray" source="TmpTransedit"
> target="TmpTransedit" db-relationship-path="tmpTranseditArray"/>
> <obj-relationship name="toDatei" source="TmpTransedit" target="Datei"
> db-relationship-path="toSenDateien"/>
> <obj-relationship name="toTmpAttreditArray" source="TmpTransedit"
> target="TmpAttredit" db-relationship-path="toTmpAttreditArray"/>
> <obj-relationship name="toTmpTransedit" source="TmpTransedit"
> target="TmpTransedit" db-relationship-path="toTmpTransedit"/>
>
>
>
This archive was generated by hypermail 2.0.0 : Mon Aug 20 2007 - 16:25:38 EDT