When I change objectId to clientRelationshipId I get this error:  

org.apache.ojb.broker.OJBRuntimeException: Incorrect or not found field
reference name 'clientRelationshipId' in descriptor
[EMAIL PROTECTED]
rieve=true,cascade_store=object,cascade_delete=object,is_lazy=false,clas
s_of_Items=class model.client.NewClientGroup] for class-descriptor
'model.client.ClientRelationship'

objectId is the pk of all our persistent classes (they all extend
AdmObject which contains objectId).  I was under the impression that the
forignkey element should have the pk of the referenced class.  In this
case NewClientGroup has a reference to ClientRelationship, and the pk of
ClientRelationship is objectId.  clientRelationshipId is a field in
NewClientGroup that has the pk of it's parent ClientRelationship (I
don't have clientRelationshipId as anonymous below...I've been switching
back and forth on that one).  


-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, March 23, 2005 12:27 PM
To: OJB Users List
Subject: Re: Problem retrieving collection.


Hi again,

change

<foreignkey field-ref="objectId"/>

to

<foreignkey field-ref="clientRelationshipId"/>

in

<reference-descriptor name="clientRelationship"
class-ref="model.client.ClientRelationship">
                <foreignkey field-ref="objectId"/>
</reference-descriptor>

of class NewClientGroup.

regards,
Armin


Lemke, Wesley wrote:
> I apologize for sending so many messages to the list, but this one 
> really has me scratching my head.  Here is the data stored in the
> database:
> 
> mysql> select group_id, client_id, name, parent_id, class_name from
> client_group;
> +----------+-----------+---------------------+-----------+------------
> +----------+-----------+---------------------+-----------+--
> ---------------+
> | group_id | client_id | name                | parent_id | class_name
> |
> +----------+-----------+---------------------+-----------+------------
> +----------+-----------+---------------------+-----------+--
> ---------------+
> |        1 |         1 | First Client Group  |      NULL |
> model.client.NewClientGroup |
> |        4 |         1 | Second Client Group |      NULL |
> model.client.NewClientGroup |
> +----------+-----------+---------------------+-----------+------------
> +----------+-----------+---------------------+-----------+--
> ---------------+
> 2 rows in set (0.00 sec)
> 
> mysql> select * from client;
> +-----------+--------------+--------------------+
> | client_id | agr_approver | last_modified_user |
> +-----------+--------------+--------------------+
> |         1 | Zeus         | N0079911           |
> +-----------+--------------+--------------------+
> 1 row in set (0.01 sec)
> 
> Here is my mapping (It worked fine for storing the items):
> 
> <class-descriptor
>       class="model.AdmObject">
>       <extent-class class-ref="model.client.ClientRelationship" />
>       <extent-class class-ref="model.client.GenericGroup" /> 
> </class-descriptor>
> 
> <class-descriptor
>       class="model.client.GenericGroup">
>       <extent-class class-ref="model.client.NewClientGroup" /> 
> </class-descriptor>
> 
> <class-descriptor
>       class="model.client.ClientRelationship"
>       table="client">
>     <field-descriptor
>         name="objectId"
>         column="client_id"
>         jdbc-type="INTEGER"
>         primarykey="true"
>         autoincrement="true"
>         access="readonly"
>         />
>     <field-descriptor
>       name="nameOfApproverOfNoContract"
>       column="agr_approver"
>       jdbc-type="VARCHAR"
>       />      
>       <collection-descriptor
>               name="clientGroups"
>               element-class-ref="model.client.NewClientGroup"
>               auto-delete="true"
>               auto-update="true"
>       >
>               <inverse-foreignkey field-ref="clientRelationshipId" />
>       </collection-descriptor>    
> </class-descriptor>
> 
> <class-descriptor
>       class="model.client.NewClientGroup"
>       table="client_group">
>       <field-descriptor
>               name="objectId"
>               column="group_id"
>               jdbc-type="INTEGER"
>               primarykey="true"
>               autoincrement="true"
>               access="readonly"
>       />
>       <field-descriptor
>               name="clientRelationshipId"
>               column="client_id"
>               jdbc-type="INTEGER"
>       />      
>       <field-descriptor
>               name="name"
>               column="NAME"
>               jdbc-type="VARCHAR"
>       />
>       <field-descriptor
>               name="ojbConcreteClass"
>               column="CLASS_NAME"
>               jdbc-type="VARCHAR"
>       />
>       <reference-descriptor name="clientRelationship" 
> class-ref="model.client.ClientRelationship">
>               <foreignkey field-ref="objectId"/>
>       </reference-descriptor>                                         
> </class-descriptor>
> </descriptor-repository>
> 
> And here is my code:
> 
>               Query q = new QueryByCriteria(ClientRelationship.class);
>               Collection clientRelationships =
broker.getCollectionByQuery(q);
>               Iterator i = clientRelationships.iterator();
> 
>               writer.println("<br><br>");
>               
>               while (i.hasNext()) {
>                       ClientRelationship cr = (ClientRelationship)
> i.next();
>       
> writer.println(cr.getNameOfApproverOfNoContract() + "<br>\n");
>                       List clientGroups = cr.getClientGroups();
>                       Iterator gi = clientGroups.iterator();
>                       while (gi.hasNext()) {
>                               NewClientGroup ncg = (NewClientGroup)
> gi.next();
>                               writer.println("&nbsp;&nbsp;&nbsp;" +
> ncg.getName() + "<br>\n");
>                       }
>               }
> 
> When I run this code, here is the error:
> 
> [3/23/05 11:19:33:220 CST] 6c8a022d WebGroup      I SRVE0180I:
> [CollapsedTwo] [/CollapsedTwo] [Servlet.LOG]:
> servlets.InheritanceServlet: init
> [3/23/05 11:19:34:982 CST] 6c8a022d SystemOut     O
> [org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG:

> SQL:SELECT A0.agr_approver,A0.client_id FROM client A0 [3/23/05 
> 11:19:35:012 CST] 6c8a022d ConnectionFac I J2CA0122I: Resource 
> reference jdbc/ao79 could not be located, so default values of the 
> following are used: [Resource-ref settings]
> 
>       res-auth:                 1 (APPLICATION)
>       res-isolation-level:      0 (TRANSACTION_NONE)
>       res-sharing-scope:        true (SHAREABLE)
>       res-resolution-control:   999 (undefined)
> [Other attributes]
> 
> isCMP1_x:                 false (not CMP1.x)
> isJMS:                 false (not JMS)
> 
> [3/23/05 11:19:35:212 CST] 6c8a022d SystemOut     O
> [org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG:

> SQL:SELECT A0.CLASS_NAME,A0.group_id,A0.NAME,A0.client_id FROM 
> client_group A0 WHERE ( A0.client_id = ?) AND  (A0.CLASS_NAME = ?)
> [3/23/05 11:19:35:222 CST] 6c8a022d SystemOut     O [PersistentField]
> ERROR: while set field:
> [try to set 'object value' in 'target object'
> target obj class: model.client.NewClientGroup
> target field name: clientRelationship
> target field type: class model.client.ClientRelationship
> object value class: model.client.NewClientGroup
> object value: [EMAIL PROTECTED]
> ]
> org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error
> setting field:clientRelationship in object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.setValueFor(Unknown Source)
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.set(Unknown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknow
> n Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unkno
> wn Source)
>       at
>
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unkn
> own Source)
>       at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
> Source)
>       at
>
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
> servlets.InheritanceServlet.printGroups(InheritanceServlet.java:123)
>       at
> servlets.InheritanceServlet.doPost(InheritanceServlet.java:75)
>       at servlets.InheritanceServlet.doGet(InheritanceServlet.java:44)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.servlet.InvokerServlet.service(InvokerServlet.ja
> va:255)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:7
> 9)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInv
> oker.java:201)
>       at
>
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocati
> on(CachedInvocation.java:71)
>       at
>
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(Servle
> tRequestProcessor.java:182)
>       at
>
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSELis
> tener.java:334)
>       at
>
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection
> .java:56)
>       at
>
com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:
> 610)
>       at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
> Caused by: java.lang.IllegalArgumentException: field type mismatch
>       at java.lang.reflect.Field.set(Native Method)
>       ... 50 more
> [3/23/05 11:19:35:242 CST] 6c8a022d WebGroup      E SRVE0026E:
[Servlet
> Error]-[servlets.InheritanceServlet]:
> org.apache.ojb.broker.PersistenceBrokerException:
> org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error
> setting field:clientRelationship in object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
> servlets.InheritanceServlet.printGroups(InheritanceServlet.java:123)
>       at
> servlets.InheritanceServlet.doPost(InheritanceServlet.java:75)
>       at servlets.InheritanceServlet.doGet(InheritanceServlet.java:44)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.servlet.InvokerServlet.service(InvokerServlet.ja
> va:255)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:7
> 9)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInv
> oker.java:201)
>       at
>
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocati
> on(CachedInvocation.java:71)
>       at
>
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(Servle
> tRequestProcessor.java:182)
>       at
>
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSELis
> tener.java:334)
>       at
>
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection
> .java:56)
>       at
>
com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:
> 610)
>       at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
> Caused by: org.apache.ojb.broker.metadata.MetadataException:
> IllegalAccess error setting field:clientRelationship in
> object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.setValueFor(Unknown Source)
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.set(Unknown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknow
> n Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unkno
> wn Source)
>       at
>
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unkn
> own Source)
>       at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
> Source)
>       at
>
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       ... 41 more
> Caused by: java.lang.IllegalArgumentException: field type mismatch
>       at java.lang.reflect.Field.set(Native Method)
>       ... 50 more
> 
> [3/23/05 11:19:35:493 CST] 6c8a022d OSEListenerDi E PLGN0021E: Servlet

> Request Processor Exception: Virtual Host/WebGroup Not Found : The web

> group /favicon.ico has not been defined
> 
> 
> Does anyone know why I am getting this error?
> 
> -----Original Message-----
> From: Lemke, Wesley
> Sent: Wednesday, March 23, 2005 10:31 AM
> To: 'OJB Users List'
> Subject: RE: Updating instead of Inserting
> 
> 
> I still am unable to retrieve objects from the database.  I've stepped

> through the code, but am having problems understanding what is going 
> on.
> 
> At line 158 of 
> org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccess
> Im
> plNew.java setValueFor() is being called with the Field's name =
> clientRelationship, and the type=Class
model.client.ClientRelationship.
> However, the target and value objects are the same object (they have
the
> same id), and are type NewClientGroup.
> 
> Shouldn't the target and value objects be of type ClientRelationship?
> 
> The other thing I noticed is the second time I run my code I don't get

> an exception, but I also don't get the NewClientGroups.  I'm assuming 
> this has something to do with the caching...
> 
> -----Original Message-----
> From: Lemke, Wesley
> Sent: Tuesday, March 22, 2005 12:55 PM
> To: 'OJB Users List'
> Subject: RE: Updating instead of Inserting
> 
> 
> I am persisting the objects fine now, but I am getting an error when
> retrieving:
> 
> [3/22/05 12:44:43:008 CST] 39432342 SystemOut     O [PersistentField]
> ERROR: while set field:
> [try to set 'object value' in 'target object'
> target obj class: model.client.NewClientGroup
> target field name: clientRelationship
> target field type: class model.client.ClientRelationship
> object value class: model.client.NewClientGroup
> object value: [EMAIL PROTECTED]
> ]
> 
> Here are the pertinent parts of repository.xml:
> 
> In the class-descriptor for ClientRelationship:
>       <collection-descriptor
>               name="clientGroups"
>               element-class-ref="model.client.NewClientGroup"
>               auto-delete="true"
>               auto-update="true"
>       >
>               <inverse-foreignkey field-ref="clientRelationshipId" />
>       </collection-descriptor>
> 
> In the class-descriptor for NewClientGroup:
>       <reference-descriptor name="clientRelationship" 
> class-ref="model.client.ClientRelationship">
>               <foreignkey field-ref="objectId"/>
>       </reference-descriptor> 
> 
> In the NewClientGroup Class:
>       private ClientRelationship clientRelationship;  // with getter
and 
> setter defined.
> 
> Here is the code I am running:
> 
>                       Query q = new
> QueryByCriteria(ClientRelationship.class);
>                       Collection clientRelationships =
broker.getCollectionByQuery(q); 
> <-- exception thrown here.
>                       Iterator i = clientRelationships.iterator();
> 
>                       writer.println("<br><br>");
>                       while (i.hasNext()) {
>                               ClientRelationship cr2 =
> (ClientRelationship) i.next();
>       
> writer.println(cr2.getNameOfApproverOfNoContract());
>                               List clientGroups =
> cr2.getClientGroups();
>                       }               
> 
> I am assuming that when OJB pulls back the ClientRelationships, it is 
> also pulling back the collection of NewClientGroups (and Subgroups). 
> When it instantiates the NewClientGroup it is trying to set the 
> clientRelationship field.  Why is it trying to set it to a 
> NewClientGroup, instead of the associated ClientRelationship?
> 
> Here is the entire stack trace if it helps:
> 
> [3/22/05 12:44:42:998 CST] 39432342 SystemOut     O
> [org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl] DEBUG:

> SQL:SELECT 
> A0.CLASS_NAME,A0.client_grp_id,A0.INN_CLIENT_NB,A0.client_id,A0.LAST_M
> OD
>
IFIED_USER,A0.SDD_COMP_I,A0.LAST_NAME_DT,A0.ETL_CLIENT_ID,A0.KEY_WORDS,A
>
0.LAST_NAME,A0.MAIL_MEMBERS,A0.PRIMARY_GRP_I,A0.group_id,A0.COMMENTS,A0.
> REPORTS_DESC,A0.EFF_DT,A0.NAME FROM client_group A0 WHERE (
A0.client_id
> = ?) AND  (A0.CLASS_NAME = ?)
> [3/22/05 12:44:43:078 CST] 39432342 SystemErr     R
> org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error
> setting field:clientRelationship in object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.setValueFor(Unknown Source)
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.set(Unknown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknow
> n Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unkno
> wn Source)
>       at
>
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unkn
> own Source)
>       at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
> Source)
>       at
>
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
> servlets.InheritanceServlet.doPost(InheritanceServlet.java:79)
>       at servlets.InheritanceServlet.doGet(InheritanceServlet.java:44)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.servlet.InvokerServlet.service(InvokerServlet.ja
> va:255)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:7
> 9)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInv
> oker.java:201)
>       at
>
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocati
> on(CachedInvocation.java:71)
>       at
>
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(Servle
> tRequestProcessor.java:182)
>       at
>
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSELis
> tener.java:334)
>       at
>
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection
> .java:56)
>       at
>
com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:
> 610)
>       at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
> Caused by: java.lang.IllegalArgumentException: field type mismatch
>       at java.lang.reflect.Field.set(Native Method)
>       ... 49 more
> [3/22/05 12:44:43:008 CST] 39432342 SystemOut     O [PersistentField]
> ERROR: while set field: 
> [try to set 'object value' in 'target object'
> target obj class: model.client.NewClientGroup
> target field name: clientRelationship
> target field type: class model.client.ClientRelationship
> object value class: model.client.NewClientGroup
> object value: [EMAIL PROTECTED]
> ]
> [3/22/05 12:44:47:865 CST] 39432342 WebGroup      E SRVE0026E:
[Servlet
> Error]-[servlets.InheritanceServlet]:
> org.apache.ojb.broker.PersistenceBrokerException:
> org.apache.ojb.broker.metadata.MetadataException: IllegalAccess error
> setting field:clientRelationship in object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       at
>
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
>
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQu
> ery(Unknown Source)
>       at
> servlets.InheritanceServlet.doPost(InheritanceServlet.java:79)
>       at servlets.InheritanceServlet.doGet(InheritanceServlet.java:44)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.servlet.InvokerServlet.service(InvokerServlet.ja
> va:255)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictSe
> rvletInstance.java:110)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLi
> fecycleServlet.java:174)
>       at
>
com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycle
> Servlet.java:313)
>       at
>
com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLif
> ecycleServlet.java:116)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.
> java:283)
>       at
>
com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(Vali
> dServletReferenceState.java:42)
>       at
>
com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(Servle
> tInstanceReference.java:40)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispa
> tch(WebAppRequestDispatcher.java:948)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRe
> questDispatcher.java:530)
>       at
>
com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppReq
> uestDispatcher.java:176)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:7
> 9)
>       at
>
com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInv
> oker.java:201)
>       at
>
com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocati
> on(CachedInvocation.java:71)
>       at
>
com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(Servle
> tRequestProcessor.java:182)
>       at
>
com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSELis
> tener.java:334)
>       at
>
com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection
> .java:56)
>       at
>
com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:
> 610)
>       at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
>       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
> Caused by: org.apache.ojb.broker.metadata.MetadataException:
> IllegalAccess error setting field:clientRelationship in
> object:model.client.NewClientGroup
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.setValueFor(Unknown Source)
>       at
>
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessIm
> plNew.set(Unknown Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknow
> n Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unkno
> wn Source)
>       at
>
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unkn
> own Source)
>       at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown
> Source)
>       at
>
org.apache.ojb.broker.accesslayer.BasePrefetcher.prefetchRelationship(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.performRetrievalTasks(Un
> known Source)
>       at
>
org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(Unk
> nown Source)
>       ... 40 more
> Caused by: java.lang.IllegalArgumentException: field type mismatch
>       at java.lang.reflect.Field.set(Native Method)
>       ... 49 more
> 
> -----Original Message-----
> From: Armin Waibel [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, March 22, 2005 9:22 AM
> To: OJB Users List
> Subject: Re: Updating instead of Inserting
> 
> 
> Lemke, Wesley wrote:
> 
>>Thanks Armen, that worked.  I've made this same mistake before, you
>>would think I'd learn :)
>>
> 
> 
> ...you are in good company, the history of mankind is an endless list 
> of
> 
> repeated mistakes ;-)
> 
> 
> 
>>The AdmObject will have many more extents in the full application. 
>>Every persistent class will extend it, or a subclass of it.  I only 
>>had one class extending it in this subset.
>>
> 
> 
> I ask this each time, because using inheritance can be a performance
> killer and should be avoided if possible. So if you don't regular need

> query for AdmObject's, don't declare the mapping.
> 
> Armin
> 
> 
> 
>>-----Original Message-----
>>From: Armin Waibel [mailto:[EMAIL PROTECTED]
>>Sent: Tuesday, March 22, 2005 8:38 AM
>>To: OJB Users List
>>Subject: Re: Updating instead of Inserting
>>
>>
>>Hi Wes,
>>
>>why did you need mapping for AdmObject when only one class "extent" 
>>AdmObject?
>>
>>In mapping for NCG
>>
>><collection-descriptor
>>              name="subgroups"
>>              element-class-ref="model.client.Subgroup"
>>              auto-delete="true"
>>              auto-update="true"
>>      >
>>              <inverse-foreignkey field-ref="objectId" />
>>      </collection-descriptor>
>>
>>the inverse-foreignkey refer to the PK field of SG. Think this is not 
>>correct, you need a FK field in SG to store the PK value of NCG. This
> 
> FK
> 
>>field must also be used by the 'clientGroup' reference in SG [don't
>>use an anomymous field, because of the 1:n relation 
>>http://db.apache.org/ojb/docu/guides/advanced-technique.html#How+do+
>>]
>>
>>regards,
>>Armin
>>
>>
>>
>>Lemke, Wesley wrote:
>>
>>
>>>I have 4 classes:
>>>
>>>AdmObject -- highlevel class that all of our persistent classes 
>>>extend. Contains objectId field. Generic Group -- Abstract.  Extends 
>>>AdmObject.  Contains common fields for NewClientGroup and Subgroup 
>>>and
>>
>>
>>>the ojbConcreteClass. NewClientGroup -- extends Generic Group, 
>>>contains a collection of Subgroups. Subgroup -- extends Generic 
>>>Group.  Has a reference to the NewClientGroup.
>>>
>>>I am trying to persist NewClientGroup and Subgroup (along with common

>>>fields in Generic Group) to the same table.  Here is a portion of my 
>>>mapping document (most of the common fields from Generic group are 
>>>removed to simplifiy):
>>>
>>><class-descriptor
>>>     class="model.AdmObject">
>>>     <extent-class class-ref="model.client.GenericGroup" /> 
>>></class-descriptor>
>>>
>>><class-descriptor
>>>     class="model.client.GenericGroup">
>>>     <extent-class class-ref="model.client.Subgroup" />
>>>     <extent-class class-ref="model.client.NewClientGroup" /> 
>>></class-descriptor>
>>>
>>><class-descriptor
>>>     class="model.client.NewClientGroup"
>>>     table="client_group">
>>>     <field-descriptor
>>>             name="objectId"
>>>             column="group_id"
>>>             jdbc-type="INTEGER"
>>>             primarykey="true"
>>>             autoincrement="true"
>>>             access="readonly"
>>>     />
>>>     <field-descriptor
>>>             name="internalClientNumber"
>>>             column="INN_CLIENT_NB"
>>>             jdbc-type="VARCHAR"
>>>     />
>>>     <field-descriptor
>>>             name="ojbConcreteClass"
>>>             column="CLASS_NAME"
>>>             jdbc-type="VARCHAR"
>>>     />      
>>>     <collection-descriptor
>>>             name="subgroups"
>>>             element-class-ref="model.client.Subgroup"
>>>             auto-delete="true"
>>>             auto-update="true"
>>>     >
>>>             <inverse-foreignkey field-ref="objectId" />
>>>     </collection-descriptor>        
>>></class-descriptor>
>>><class-descriptor
>>>     class="model.client.Subgroup"
>>>     table="client_group"
>>>     >
>>>     <field-descriptor
>>>             name="objectId"
>>>             column="group_id"
>>>             jdbc-type="INTEGER"
>>>             primarykey="true"
>>>             autoincrement="true"
>>>             access="readonly"
>>>     />
>>>     <field-descriptor
>>>             name="name"
>>>             column="NAME"
>>>             jdbc-type="VARCHAR"
>>>     />      
>>>     <field-descriptor
>>>             name="ojbConcreteClass"
>>>             column="CLASS_NAME"
>>>             jdbc-type="VARCHAR"
>>>     />      
>>>     <reference-descriptor name="clientGroup" 
>>>class-ref="model.client.NewClientGroup">
>>>             <foreignkey field-ref="objectId"/>
>>>     </reference-descriptor>                 
>>></class-descriptor>
>>>
>>>Here is the code I am using:
>>>                     broker.beginTransaction();
>>>                     NewClientGroup ncg = new NewClientGroup();
>>>                     ncg.setInternalClientNumber("IntClntNbr");
>>>                     Subgroup sg = new Subgroup();
>>>                     sg.setName("FirstSubgroup");
>>>                     ncg.addSubgroup(sg);
>>>                     Subgroup sg2 = new Subgroup();
>>>                     sg.setName("Second Subgroup");
>>>                     ncg.addSubgroup(sg2);
>>>                     broker.store(ncg);
>>>                     broker.commitTransaction();
>>>
>>>I would assume that after the above code, there would be one 
>>>NewClientGroup and 2 Subgroups in my client_group table.  However, 
>>>there is only one row, the Second Subgroup.  Here is the debug SQL
>>>generated:
>>>
>>>DEBUG: SQL:INSERT INTO client_group (INN_CLIENT_NB,CLASS_NAME) VALUES
>>>(?,?)
>>>DEBUG: SQL:UPDATE client_group SET NAME=?,CLASS_NAME=? WHERE group_id
>>
>>=
>>
>>
>>>?
>>>
>>>Am I doing something wrong with my mapping or code?  Is it possible 
>>>to
>>
>>
>>>persist these classes to the same table?
>>>
>>>Any help would be appreciated.
>>>
>>>Thanks,
>>>Wes
>>>
>>>---------------------------------------------------------------------
>>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to