[ojb-users] recursive n:m mapping
Brought to you by:
thma
From: Juergen L. <jli...@un...> - 2002-05-02 15:52:49
|
Hi,=20 I've got a problem with the n:m mapping. I've got a quiet simple objetcmode= l with two classes with the n:m relationship. Einrichtung contains a Vector gruppen, a name and a id Gruppe contains a Vector einrichtungen a name and a id Im trying to create a Gruppe and a Einrichtung with a relationship. public void newElements(String name) { Gruppe g =3D new Gruppe(); Einrichtung e =3D new Einrichtung(); g.setName(name); =20 e.setName("AA" + name); =20 =20 g.addEinrichtung(e); e.addGruppe(g); =20 try { broker.beginTransaction(); broker.store(g); broker.store(e); broker.commitTransaction(); } ... After this I have got a Einrichtung in its table and a Gruppe in its = table.=20 The Relation-table 'eigr' is empty. The program seems to be in an endless = loop. Does someone knows a solution to work with n:m mapping? [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT OJB_HL_SEQ.CLASSNA= ME,OJB_HL_SEQ.FIELDNAME,OJB_HL_SEQ.MAX_KEY,OJB_HL_SEQ.GRAB_SIZE FROM = OJB_HL_SEQ WHERE (OJB_HL_SEQ.CLASSNAME =3D ?) AND (OJB_HL_SEQ.FIELDNAME = =3D ?) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeInsert: ojb.broker.util.s= equence.HighLowSequence@d7ad1c [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO OJB_HL_SEQ = (CLASSNAME,FIELDNAME,MAX_KEY,GRAB_SIZE) VALUES (?,?,?,?) [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT .gruppe.id,.gruppe= .name FROM .gruppe WHERE (.gruppe.id =3D ?) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeInsert: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO .gruppe = (id,name) VALUES (?,?) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeInsert: ojb.broker.util.s= equence.HighLowSequence@91cee [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: SELECT .einrichtung.id,.e= inrichtung.name FROM .einrichtung WHERE (.einrichtung.id =3D ?) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeInsert: AAaaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO .einrichtung = (id,name) VALUES (?,?) [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: UPDATE .gruppe SET = name=3D? WHERE (.gruppe.id =3D ?) [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: AAaaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: UPDATE .einrichtung SET = name=3D? WHERE (.einrichtung.id =3D ?) [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: AAaaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: AAaaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: AAaaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (eiId,grId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: aaa [ojb.broker.accesslayer.SqlGenerator] DEBUG: SQL: INSERT INTO eigr = (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdateSQL: INSERT INTO = eigr (grId,eiId) VALUES (1,1) [ojb.broker.accesslayer.JdbcAccess] DEBUG: executeUpdate: AAaaa [ojb.broker.accesslayer.SqlGenerato Here is the small xml-repositoryfile for this problem <!-- Mapping of User defined classes starts here --> <!-- Please keep user defined mappings in this file only, to avoid mixing user defined and system mappings. --> =20 <ClassDescriptor id=3D"0"> <class.name>com.ojbtest.Einrichtung</class.name> <class.proxy>dynamic</class.proxy> <table.name>.einrichtung</table.name> <FieldDescriptor id=3D"1"> <field.name>id</field.name> <column.name>id</column.name> <jdbc_type>INTEGER</jdbc_type> <PrimaryKey>true</PrimaryKey> <autoincrement>true</autoincrement> </FieldDescriptor> <FieldDescriptor id=3D"2"> <field.name>name</field.name> <column.name>name</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> <CollectionDescriptor id=3D"1"> <cdfield.name>gruppen</cdfield.name> <items.class>com.ojbtest.Gruppe</items.class> <inverse_fk_descriptor_ids>999</inverse_fk_descriptor_ids> <indirection_table>eigr</indirection_table> <fks_pointing_to_this_class>eiId</fks_pointing_to_this_class> <fks_pointing_to_items_class>grId</fks_pointing_to_items_class> <auto.retrieve>true</auto.retrieve> <auto.update>true</auto.update> </CollectionDescriptor> </ClassDescriptor> <ClassDescriptor id=3D"1"> <class.name>com.ojbtest.Gruppe</class.name> <class.proxy>dynamic</class.proxy> <table.name>.gruppe</table.name> <FieldDescriptor id=3D"1"> <field.name>id</field.name> <column.name>id</column.name> <jdbc_type>INTEGER</jdbc_type> <PrimaryKey>true</PrimaryKey> <autoincrement>true</autoincrement> </FieldDescriptor> <FieldDescriptor id=3D"2"> <field.name>name</field.name> <column.name>name</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> =09 <CollectionDescriptor id=3D"1"> <cdfield.name>einrichtungen</cdfield.name> <items.class>com.ojbtest.Einrichtung</items.class> <inverse_fk_descriptor_ids>999</inverse_fk_descriptor_ids> <indirection_table>eigr</indirection_table> <fks_pointing_to_this_class>grId</fks_pointing_to_this_class> <fks_pointing_to_items_class>eiId</fks_pointing_to_items_class> <auto.retrieve>true</auto.retrieve> <auto.update>true</auto.update> </CollectionDescriptor> </ClassDescriptor> |