You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Wojciech CHMIELEWSKI <wc...@sgh.waw.pl> on 2004/09/07 18:12:24 UTC

[PersistentField] ERROR: while set field:

I'm using ojb since yestarday and I experience  some problems ...
when I use ojb for one class which takes date from one table 
everything is ok, the problem begins when I have object o1 of a 
type  AddressBO which has an object o2 of a type AddressTypeBO 
and I want to take o1 and of course have o2 filled.

And of course, when I want to do this I get error.

Any help is appreciated :)

I attached :
1) errorr description
2) java classes
3) repository.xml

1) I get this type of error :

[org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: 
Creating RsIterator for class 
[com.chw.crm.BusinessObject.AddressBO]
[org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: 
getObjectByIdentity com.chw.crm.BusinessObject.BO{2}
[PersistentField] ERROR: while set field:
[try to set 'object value' in 'target object'
target obj class: com.chw.crm.BusinessObject.AddressBO
target field name: addressType
target field type: class com.chw.crm.BusinessObject.AddressTypeBO
object value class: com.chw.crm.BusinessObject.AddressBO
object value: com.chw.crm.BusinessObject.AddressBO@abe654
]
null
java.lang.IllegalArgumentException
 	at 
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
 	at java.lang.reflect.Field.set(Field.java:519)
 	at 
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl.doSet(Unknown 
Source)
 	at 
org.apache.ojb.broker.metadata.fieldaccess.AbstractPersistentField.set(Unknown 
Source)
 	at 
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknown 
Source)
 	at 
org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unknown 
Source)
 	at 
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
Source)
 	at 
org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
 	at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown 
Source)
 	at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
 	at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
Source)
 	at 
com.chw.crm.DAO.BusinessObjectDAO.OracleBusinessObjectDAO.OracleAddressDAO.getAddressBO(OracleAddressDAO.java:44)
 	at 
com.chw.crm.Action.TestAction.execute(TestAction.java:43)

2) java code (not all only needed fragments)


package com.chw.crm.BusinessObject;

import java.io.Serializable;

/**
  * @author Administrator
  *
  * @ojb.class generate-table-info="false"
  */

public class BO implements Serializable {

}


package com.chw.crm.BusinessObject;

/**
  * @ojb.class table="ADDRESS_T"
  *
  */

public class AddressBO extends BO {


     /**
      * @ojb.field column="OBJID"
      *            jdbc-type="BIGINT"
      *            primarykey="true"
      *            id="1"
      */
     private long objid;

     /**
      * @ojb.field column="ADDRESS2STATUS"
      *            jdbc-type="BIGINT"
      *            id="2"
      */
     private long address2status;

     /**
      * @ojb.reference 
class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
      * 
foreignkey="address2addressType"
      *
      */
     private AddressTypeBO addressType;

     /**
      *
      * @ojb.field column="ADDRESS2ADDRESS_TYPE"
      *            jdbc-type="BIGINT"
      *            id="3"
      *
      */
     private long address2addressType;


package com.chw.crm.BusinessObject;
/**
  * @ojb.class table="ADDRESS_TYPE_T"
  *            include-inherited="true"
  */

public class AddressTypeBO extends BO {


     /**
      * @ojb.field column="OBJID"
      *            jdbc-type="BIGINT"
      *            primarykey="true"
      *            id="1"
      */
     private long objid;

     /**
      * @ojb.field column="DESCRIPTION"
      *            jdbc-type="VARCHAR"
      *            id="2"
      */
     private String description;

     /**
      * @ojb.field column="VALUE"
      *            jdbc-type="VARCHAR"
      *            id="3"
      */
     private String value;



public class OracleAddressDAO implements AddressDAO {

 	public AddressBO getAddressBO(int objid){

 		AddressBO bo = new AddressBO();

 		PersistenceBroker broker;

 		try {

 			broker = OracleDAOFactory.getTheBroker();

 			broker.beginTransaction();

 			Criteria c = new Criteria();
 			c.addEqualTo("objid", new Integer( objid 
) );
 			Query query = new QueryByCriteria( 
AddressBO.class , c );

---------->>>> error IS  HERE  !!!

 			try {
 				bo = 
(AddressBO)broker.getObjectByQuery( query );
 			} catch (PersistenceBrokerException e1) {


System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
 				System.out.println( 
e1.getMessage() );

System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
 				System.out.println( 
e1.getSourceException().toString() );

System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
 				System.out.println( e1.getCause() 
);

System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
 				e1.printStackTrace();

 			}

 			/*Iterator iter = 
broker.getIteratorByQuery(query);

 			if (iter.hasNext())
 				bo = (AddressBO)iter.next();
 			*/
 			broker.commitTransaction();
 			broker.clearCache();

 			System.out.println("###222###bo 
to:"+bo.getObjid()+" :: "+bo.getStreet() );

 		} catch (PBFactoryException e) {

 			e.printStackTrace();
 		}

 		return bo;
 	}



3) repository file

<!-- file containing the repository descriptions for user-defined 
types -->
<!-- Generated by the xdoclet-ojb module -->

<class-descriptor
     class="com.chw.crm.BusinessObject.AddressBO"
     table="ADDRESS_T"
>
     <field-descriptor
         name="objid"
         column="OBJID"
         jdbc-type="BIGINT"
         primarykey="true"
     >
     </field-descriptor>
     <field-descriptor
         name="address2status"
         column="ADDRESS2STATUS"
         jdbc-type="BIGINT"
     >
     </field-descriptor>
     <field-descriptor
         name="address2addressType"
         column="ADDRESS2ADDRESS_TYPE"
         jdbc-type="BIGINT"
     >
     </field-descriptor>
     <field-descriptor
         name="description"
         column="DESCRIPTION"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="street"
         column="STREET"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="house"
         column="HOUSE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="apartment"
         column="APARTMENT"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="zipcode"
         column="ZIPCODE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="city"
         column="CITY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="postName"
         column="POST_NAME"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="country"
         column="COUNTRY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="area"
         column="AREA"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="region"
         column="REGION"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="shortAddress"
         column="SHORT_ADDRESS"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="mediumAddress"
         column="MEDIUM_ADDRESS"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="fullAddress"
         column="FULL_ADDRESS"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="valid"
         column="VALID"
         jdbc-type="BIGINT"
     >
     </field-descriptor>
     <field-descriptor
         name="isObsolate"
         column="IS_OBSOLATE"
         jdbc-type="BIGINT"
     >
     </field-descriptor>
     <field-descriptor
         name="createdBy"
         column="CREATED_BY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="creationDate"
         column="CREATION_DATE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="modyfiedBy"
         column="MODYFIED_BY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="modyficationDate"
         column="MODYFICATION_DATE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <reference-descriptor
         name="addressType"
         class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
     >
         <foreignkey field-ref="address2addressType"/>
     </reference-descriptor>
</class-descriptor>
<class-descriptor
     class="com.chw.crm.BusinessObject.AddressTypeBO"
     table="ADDRESS_TYPE_T"
>
     <field-descriptor
         name="objid"
         column="OBJID"
         jdbc-type="BIGINT"
         primarykey="true"
     >
     </field-descriptor>
     <field-descriptor
         name="description"
         column="DESCRIPTION"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="value"
         column="VALUE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="uValue"
         column="U_VALUE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="isObsolate"
         column="IS_OBSOLATE"
         jdbc-type="BIGINT"
     >
     </field-descriptor>
     <field-descriptor
         name="createdBy"
         column="CREATED_BY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="creationDate"
         column="CREATION_DATE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="modyfiedBy"
         column="MODYFIED_BY"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
     <field-descriptor
         name="modyficationDate"
         column="MODYFICATION_DATE"
         jdbc-type="VARCHAR"
         length="254"
     >
     </field-descriptor>
</class-descriptor>
<class-descriptor
     class="com.chw.crm.BusinessObject.BO"
>
     <extent-class 
class-ref="com.chw.crm.BusinessObject.AddressBO"/>
     <extent-class 
class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
</class-descriptor>






 				regards,
 				Wojciech Chmielewski

email wojciech.chmielewski@student.sgh.waw.pl mobile 501172125
----------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: [PersistentField] ERROR: while set field:

Posted by Wojciech CHMIELEWSKI <wc...@sgh.waw.pl>.
On Tue, 7 Sep 2004, Armin Waibel wrote:

> Wojciech CHMIELEWSKI wrote:
>
>> On Tue, 7 Sep 2004, Armin Waibel wrote:
>> 
>>> Hi,
>>> 
>>> your mapping seems ok. Could you post the generated class-descriptor for
>>> AddressTypeBO and AddressBO too?
>> 
>> 
>> there were  send -> point 3) repository.xml - this only fragment of 
>> repository.xml, only class-descriptor for AddressTypeBO and AddressBO
>> 
>
> oh, sorry I overlooked this - too long mail ;-)
>
> The problem could be caused by the extents mapping of the BO object:
>
>>>> <class-descriptor
>>>>     class="com.chw.crm.BusinessObject.BO"
>>>>
>>>>>
>>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
>>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
>>>> </class-descriptor>
>
>
> Assume BO class is only a base object for your business classes and you never 
> want to query "give all BO objects". In this case you shouldn't declare 
> AddressBO and AddressTypeBO as extent of BO.
> Try to remove this entry and run your test again.
>
> If this solve your problem try determine-extents="false" in AddressBO and 
> AddressTypeBO to suppress generation of extent mapping.
>
>
>>> 
>>> Did you try without the 'id' attribute (it's optional) set?
>>> Which version do you use?
>>> 
>>  ojb 1rc7, oracle 9i, tomcat 5, struts
>> 
>
> If you get problems caused by xdoclet-modul try latest version of the 
> xdoclet-ojb-modul.jar (or use the version shipped with OJB 1.0).
>
many thanks, it helps ...


yes BO is only my base object.
but if BO wasn't only base object and I want query it. why isn't 
it  works in my implementation ?? what was the cause of the 
problem ??

and once more many thanks ...

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: [PersistentField] ERROR: while set field:

Posted by Wojciech CHMIELEWSKI <wc...@sgh.waw.pl>.
On Tue, 7 Sep 2004, Armin Waibel wrote:

> Wojciech CHMIELEWSKI wrote:
>
>> On Tue, 7 Sep 2004, Armin Waibel wrote:
>> 
>>> Hi,
>>> 
>>> your mapping seems ok. Could you post the generated class-descriptor for
>>> AddressTypeBO and AddressBO too?
>> 
>> 
>> there were  send -> point 3) repository.xml - this only fragment of 
>> repository.xml, only class-descriptor for AddressTypeBO and AddressBO
>> 
>
> oh, sorry I overlooked this - too long mail ;-)
>
> The problem could be caused by the extents mapping of the BO object:
>
>>>> <class-descriptor
>>>>     class="com.chw.crm.BusinessObject.BO"
>>>>
>>>>>
>>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
>>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
>>>> </class-descriptor>
>
>
> Assume BO class is only a base object for your business classes and you never 
> want to query "give all BO objects". In this case you shouldn't declare 
> AddressBO and AddressTypeBO as extent of BO.
> Try to remove this entry and run your test again.
>
> If this solve your problem try determine-extents="false" in AddressBO and 
> AddressTypeBO to suppress generation of extent mapping.
>

many thanks, it helps ...


yes BO is only my base object.
but if BO wasn't only base object and I want query it. why isn't 
it  works in my implementation ?? what was the cause ??

and once more many thanks ...

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: [PersistentField] ERROR: while set field:

Posted by Armin Waibel <ar...@apache.org>.
Wojciech CHMIELEWSKI wrote:

> On Tue, 7 Sep 2004, Armin Waibel wrote:
> 
>> Hi,
>>
>> your mapping seems ok. Could you post the generated class-descriptor for
>> AddressTypeBO and AddressBO too?
> 
> 
> there were  send -> point 3) repository.xml - this only fragment of 
> repository.xml, only class-descriptor for AddressTypeBO and AddressBO
>

oh, sorry I overlooked this - too long mail ;-)

The problem could be caused by the extents mapping of the BO object:

 >>> <class-descriptor
 >>>     class="com.chw.crm.BusinessObject.BO"
 >>>
 >>>>
 >>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
 >>>     <extent-class 
class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
 >>> </class-descriptor>


Assume BO class is only a base object for your business classes and you 
never want to query "give all BO objects". In this case you shouldn't 
declare AddressBO and AddressTypeBO as extent of BO.
Try to remove this entry and run your test again.

If this solve your problem try determine-extents="false" in AddressBO 
and AddressTypeBO to suppress generation of extent mapping.


>>
>> Did you try without the 'id' attribute (it's optional) set?
>> Which version do you use?
>>
>  ojb 1rc7, oracle 9i, tomcat 5, struts
> 

If you get problems caused by xdoclet-modul try latest version of the 
xdoclet-ojb-modul.jar (or use the version shipped with OJB 1.0).

regards,
Armin


>> regards,
>> Armin
>>
>> Wojciech CHMIELEWSKI wrote:
>>
>>>
>>> I'm using ojb since yestarday and I experience  some problems ...
>>> when I use ojb for one class which takes date from one table 
>>> everything is ok, the problem begins when I have object o1 of a type  
>>> AddressBO which has an object o2 of a type AddressTypeBO and I want 
>>> to take o1 and of course have o2 filled.
>>>
>>> And of course, when I want to do this I get error.
>>>
>>> Any help is appreciated :)
>>>
>>> I attached :
>>> 1) errorr description
>>> 2) java classes
>>> 3) repository.xml
>>>
>>> 1) I get this type of error :
>>>
>>> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: Creating 
>>> RsIterator for class [com.chw.crm.BusinessObject.AddressBO]
>>> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: 
>>> getObjectByIdentity com.chw.crm.BusinessObject.BO{2}
>>> [PersistentField] ERROR: while set field:
>>> [try to set 'object value' in 'target object'
>>> target obj class: com.chw.crm.BusinessObject.AddressBO
>>> target field name: addressType
>>> target field type: class com.chw.crm.BusinessObject.AddressTypeBO
>>> object value class: com.chw.crm.BusinessObject.AddressBO
>>> object value: com.chw.crm.BusinessObject.AddressBO@abe654
>>> ]
>>> null
>>> java.lang.IllegalArgumentException
>>>     at 
>>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
>>>     at java.lang.reflect.Field.set(Field.java:519)
>>>     at 
>>> org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl.doSet(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.metadata.fieldaccess.AbstractPersistentField.set(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
>>> Source)
>>>     at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
>>>     at 
>>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
>>> Source)
>>>     at 
>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
>>> Source)
>>>     at 
>>> com.chw.crm.DAO.BusinessObjectDAO.OracleBusinessObjectDAO.OracleAddressDAO.getAddressBO(OracleAddressDAO.java:44) 
>>>     at com.chw.crm.Action.TestAction.execute(TestAction.java:43)
>>>
>>> 2) java code (not all only needed fragments)
>>>
>>>
>>> package com.chw.crm.BusinessObject;
>>>
>>> import java.io.Serializable;
>>>
>>> /**
>>>  * @author Administrator
>>>  *
>>>  * @ojb.class generate-table-info="false"
>>>  */
>>>
>>> public class BO implements Serializable {
>>>
>>> }
>>>
>>>
>>> package com.chw.crm.BusinessObject;
>>>
>>> /**
>>>  * @ojb.class table="ADDRESS_T"
>>>  *
>>>  */
>>>
>>> public class AddressBO extends BO {
>>>
>>>
>>>     /**
>>>      * @ojb.field column="OBJID"
>>>      *            jdbc-type="BIGINT"
>>>      *            primarykey="true"
>>>      *            id="1"
>>>      */
>>>     private long objid;
>>>
>>>     /**
>>>      * @ojb.field column="ADDRESS2STATUS"
>>>      *            jdbc-type="BIGINT"
>>>      *            id="2"
>>>      */
>>>     private long address2status;
>>>
>>>     /**
>>>      * @ojb.reference 
>>> class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>>>      * foreignkey="address2addressType"
>>>      *
>>>      */
>>>     private AddressTypeBO addressType;
>>>
>>>     /**
>>>      *
>>>      * @ojb.field column="ADDRESS2ADDRESS_TYPE"
>>>      *            jdbc-type="BIGINT"
>>>      *            id="3"
>>>      *
>>>      */
>>>     private long address2addressType;
>>>
>>>
>>> package com.chw.crm.BusinessObject;
>>> /**
>>>  * @ojb.class table="ADDRESS_TYPE_T"
>>>  *            include-inherited="true"
>>>  */
>>>
>>> public class AddressTypeBO extends BO {
>>>
>>>
>>>     /**
>>>      * @ojb.field column="OBJID"
>>>      *            jdbc-type="BIGINT"
>>>      *            primarykey="true"
>>>      *            id="1"
>>>      */
>>>     private long objid;
>>>
>>>     /**
>>>      * @ojb.field column="DESCRIPTION"
>>>      *            jdbc-type="VARCHAR"
>>>      *            id="2"
>>>      */
>>>     private String description;
>>>
>>>     /**
>>>      * @ojb.field column="VALUE"
>>>      *            jdbc-type="VARCHAR"
>>>      *            id="3"
>>>      */
>>>     private String value;
>>>
>>>
>>>
>>> public class OracleAddressDAO implements AddressDAO {
>>>
>>>     public AddressBO getAddressBO(int objid){
>>>
>>>         AddressBO bo = new AddressBO();
>>>
>>>         PersistenceBroker broker;
>>>
>>>         try {
>>>
>>>             broker = OracleDAOFactory.getTheBroker();
>>>
>>>             broker.beginTransaction();
>>>
>>>             Criteria c = new Criteria();
>>>             c.addEqualTo("objid", new Integer( objid ) );
>>>             Query query = new QueryByCriteria( AddressBO.class , c );
>>>
>>> ---------->>>> error IS  HERE  !!!
>>>
>>>             try {
>>>                 bo = (AddressBO)broker.getObjectByQuery( query );
>>>             } catch (PersistenceBrokerException e1) {
>>>
>>>
>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>>                 System.out.println( e1.getMessage() );
>>>
>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>>                 System.out.println( 
>>> e1.getSourceException().toString() );
>>>
>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>>                 System.out.println( e1.getCause() );
>>>
>>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>>                 e1.printStackTrace();
>>>
>>>             }
>>>
>>>             /*Iterator iter = broker.getIteratorByQuery(query);
>>>
>>>             if (iter.hasNext())
>>>                 bo = (AddressBO)iter.next();
>>>             */
>>>             broker.commitTransaction();
>>>             broker.clearCache();
>>>
>>>             System.out.println("###222###bo to:"+bo.getObjid()+" :: 
>>> "+bo.getStreet() );
>>>
>>>         } catch (PBFactoryException e) {
>>>
>>>             e.printStackTrace();
>>>         }
>>>
>>>         return bo;
>>>     }
>>>
>>>
>>>
>>> 3) repository file
>>>
>>> <!-- file containing the repository descriptions for user-defined 
>>> types -->
>>> <!-- Generated by the xdoclet-ojb module -->
>>>
>>> <class-descriptor
>>>     class="com.chw.crm.BusinessObject.AddressBO"
>>>     table="ADDRESS_T"
>>>
>>>>
>>>     <field-descriptor
>>>         name="objid"
>>>         column="OBJID"
>>>         jdbc-type="BIGINT"
>>>         primarykey="true"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="address2status"
>>>         column="ADDRESS2STATUS"
>>>         jdbc-type="BIGINT"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="address2addressType"
>>>         column="ADDRESS2ADDRESS_TYPE"
>>>         jdbc-type="BIGINT"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="description"
>>>         column="DESCRIPTION"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="street"
>>>         column="STREET"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="house"
>>>         column="HOUSE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="apartment"
>>>         column="APARTMENT"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="zipcode"
>>>         column="ZIPCODE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="city"
>>>         column="CITY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="postName"
>>>         column="POST_NAME"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="country"
>>>         column="COUNTRY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="area"
>>>         column="AREA"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="region"
>>>         column="REGION"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="shortAddress"
>>>         column="SHORT_ADDRESS"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="mediumAddress"
>>>         column="MEDIUM_ADDRESS"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="fullAddress"
>>>         column="FULL_ADDRESS"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="valid"
>>>         column="VALID"
>>>         jdbc-type="BIGINT"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="isObsolate"
>>>         column="IS_OBSOLATE"
>>>         jdbc-type="BIGINT"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="createdBy"
>>>         column="CREATED_BY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="creationDate"
>>>         column="CREATION_DATE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="modyfiedBy"
>>>         column="MODYFIED_BY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="modyficationDate"
>>>         column="MODYFICATION_DATE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <reference-descriptor
>>>         name="addressType"
>>>         class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>>>     >
>>>         <foreignkey field-ref="address2addressType"/>
>>>     </reference-descriptor>
>>> </class-descriptor>
>>> <class-descriptor
>>>     class="com.chw.crm.BusinessObject.AddressTypeBO"
>>>     table="ADDRESS_TYPE_T"
>>>
>>>>
>>>     <field-descriptor
>>>         name="objid"
>>>         column="OBJID"
>>>         jdbc-type="BIGINT"
>>>         primarykey="true"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="description"
>>>         column="DESCRIPTION"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="value"
>>>         column="VALUE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="uValue"
>>>         column="U_VALUE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="isObsolate"
>>>         column="IS_OBSOLATE"
>>>         jdbc-type="BIGINT"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="createdBy"
>>>         column="CREATED_BY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="creationDate"
>>>         column="CREATION_DATE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="modyfiedBy"
>>>         column="MODYFIED_BY"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>>     <field-descriptor
>>>         name="modyficationDate"
>>>         column="MODYFICATION_DATE"
>>>         jdbc-type="VARCHAR"
>>>         length="254"
>>>     >
>>>     </field-descriptor>
>>> </class-descriptor>
>>> <class-descriptor
>>>     class="com.chw.crm.BusinessObject.BO"
>>>
>>>>
>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
>>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
>>> </class-descriptor>
>>>
>>>
>>>
>>>
>>>
>>>
>>>                 regards,
>>>                 Wojciech Chmielewski
>>>
>>> email wojciech.chmielewski@student.sgh.waw.pl mobile 501172125
>>> ----------------------------------------------------------------
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: [PersistentField] ERROR: while set field:

Posted by Wojciech CHMIELEWSKI <wc...@sgh.waw.pl>.
On Tue, 7 Sep 2004, Armin Waibel wrote:

> Hi,
>
> your mapping seems ok. Could you post the generated class-descriptor for
> AddressTypeBO and AddressBO too?

there were  send -> point 3) repository.xml - this only fragment 
of repository.xml, only class-descriptor for AddressTypeBO and 
AddressBO

>
> Did you try without the 'id' attribute (it's optional) set?
> Which version do you use?
>
  ojb 1rc7, oracle 9i, tomcat 5, struts

> regards,
> Armin
>
> Wojciech CHMIELEWSKI wrote:
>
>> 
>> I'm using ojb since yestarday and I experience  some problems ...
>> when I use ojb for one class which takes date from one table everything is 
>> ok, the problem begins when I have object o1 of a type  AddressBO which 
>> has an object o2 of a type AddressTypeBO and I want to take o1 and of 
>> course have o2 filled.
>> 
>> And of course, when I want to do this I get error.
>> 
>> Any help is appreciated :)
>> 
>> I attached :
>> 1) errorr description
>> 2) java classes
>> 3) repository.xml
>> 
>> 1) I get this type of error :
>> 
>> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: Creating 
>> RsIterator for class [com.chw.crm.BusinessObject.AddressBO]
>> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: 
>> getObjectByIdentity com.chw.crm.BusinessObject.BO{2}
>> [PersistentField] ERROR: while set field:
>> [try to set 'object value' in 'target object'
>> target obj class: com.chw.crm.BusinessObject.AddressBO
>> target field name: addressType
>> target field type: class com.chw.crm.BusinessObject.AddressTypeBO
>> object value class: com.chw.crm.BusinessObject.AddressBO
>> object value: com.chw.crm.BusinessObject.AddressBO@abe654
>> ]
>> null
>> java.lang.IllegalArgumentException
>>     at 
>> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
>>     at java.lang.reflect.Field.set(Field.java:519)
>>     at 
>> org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl.doSet(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.metadata.fieldaccess.AbstractPersistentField.set(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
>> Source)
>>     at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
>>     at 
>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
>> Source)
>>     at 
>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
>> Source)
>>     at 
>> com.chw.crm.DAO.BusinessObjectDAO.OracleBusinessObjectDAO.OracleAddressDAO.getAddressBO(OracleAddressDAO.java:44) 
>>     at com.chw.crm.Action.TestAction.execute(TestAction.java:43)
>> 
>> 2) java code (not all only needed fragments)
>> 
>> 
>> package com.chw.crm.BusinessObject;
>> 
>> import java.io.Serializable;
>> 
>> /**
>>  * @author Administrator
>>  *
>>  * @ojb.class generate-table-info="false"
>>  */
>> 
>> public class BO implements Serializable {
>> 
>> }
>> 
>> 
>> package com.chw.crm.BusinessObject;
>> 
>> /**
>>  * @ojb.class table="ADDRESS_T"
>>  *
>>  */
>> 
>> public class AddressBO extends BO {
>> 
>> 
>>     /**
>>      * @ojb.field column="OBJID"
>>      *            jdbc-type="BIGINT"
>>      *            primarykey="true"
>>      *            id="1"
>>      */
>>     private long objid;
>> 
>>     /**
>>      * @ojb.field column="ADDRESS2STATUS"
>>      *            jdbc-type="BIGINT"
>>      *            id="2"
>>      */
>>     private long address2status;
>> 
>>     /**
>>      * @ojb.reference class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>>      * foreignkey="address2addressType"
>>      *
>>      */
>>     private AddressTypeBO addressType;
>> 
>>     /**
>>      *
>>      * @ojb.field column="ADDRESS2ADDRESS_TYPE"
>>      *            jdbc-type="BIGINT"
>>      *            id="3"
>>      *
>>      */
>>     private long address2addressType;
>> 
>> 
>> package com.chw.crm.BusinessObject;
>> /**
>>  * @ojb.class table="ADDRESS_TYPE_T"
>>  *            include-inherited="true"
>>  */
>> 
>> public class AddressTypeBO extends BO {
>> 
>> 
>>     /**
>>      * @ojb.field column="OBJID"
>>      *            jdbc-type="BIGINT"
>>      *            primarykey="true"
>>      *            id="1"
>>      */
>>     private long objid;
>> 
>>     /**
>>      * @ojb.field column="DESCRIPTION"
>>      *            jdbc-type="VARCHAR"
>>      *            id="2"
>>      */
>>     private String description;
>> 
>>     /**
>>      * @ojb.field column="VALUE"
>>      *            jdbc-type="VARCHAR"
>>      *            id="3"
>>      */
>>     private String value;
>> 
>> 
>> 
>> public class OracleAddressDAO implements AddressDAO {
>> 
>>     public AddressBO getAddressBO(int objid){
>> 
>>         AddressBO bo = new AddressBO();
>> 
>>         PersistenceBroker broker;
>> 
>>         try {
>> 
>>             broker = OracleDAOFactory.getTheBroker();
>> 
>>             broker.beginTransaction();
>> 
>>             Criteria c = new Criteria();
>>             c.addEqualTo("objid", new Integer( objid ) );
>>             Query query = new QueryByCriteria( AddressBO.class , c );
>> 
>> ---------->>>> error IS  HERE  !!!
>> 
>>             try {
>>                 bo = (AddressBO)broker.getObjectByQuery( query );
>>             } catch (PersistenceBrokerException e1) {
>> 
>> 
>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>                 System.out.println( e1.getMessage() );
>> 
>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>                 System.out.println( e1.getSourceException().toString() );
>> 
>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>                 System.out.println( e1.getCause() );
>> 
>> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>>                 e1.printStackTrace();
>> 
>>             }
>> 
>>             /*Iterator iter = broker.getIteratorByQuery(query);
>> 
>>             if (iter.hasNext())
>>                 bo = (AddressBO)iter.next();
>>             */
>>             broker.commitTransaction();
>>             broker.clearCache();
>> 
>>             System.out.println("###222###bo to:"+bo.getObjid()+" :: 
>> "+bo.getStreet() );
>> 
>>         } catch (PBFactoryException e) {
>> 
>>             e.printStackTrace();
>>         }
>> 
>>         return bo;
>>     }
>> 
>> 
>> 
>> 3) repository file
>> 
>> <!-- file containing the repository descriptions for user-defined types 
>> -->
>> <!-- Generated by the xdoclet-ojb module -->
>> 
>> <class-descriptor
>>     class="com.chw.crm.BusinessObject.AddressBO"
>>     table="ADDRESS_T"
>> 
>>> 
>>     <field-descriptor
>>         name="objid"
>>         column="OBJID"
>>         jdbc-type="BIGINT"
>>         primarykey="true"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="address2status"
>>         column="ADDRESS2STATUS"
>>         jdbc-type="BIGINT"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="address2addressType"
>>         column="ADDRESS2ADDRESS_TYPE"
>>         jdbc-type="BIGINT"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="description"
>>         column="DESCRIPTION"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="street"
>>         column="STREET"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="house"
>>         column="HOUSE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="apartment"
>>         column="APARTMENT"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="zipcode"
>>         column="ZIPCODE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="city"
>>         column="CITY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="postName"
>>         column="POST_NAME"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="country"
>>         column="COUNTRY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="area"
>>         column="AREA"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="region"
>>         column="REGION"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="shortAddress"
>>         column="SHORT_ADDRESS"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="mediumAddress"
>>         column="MEDIUM_ADDRESS"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="fullAddress"
>>         column="FULL_ADDRESS"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="valid"
>>         column="VALID"
>>         jdbc-type="BIGINT"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="isObsolate"
>>         column="IS_OBSOLATE"
>>         jdbc-type="BIGINT"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="createdBy"
>>         column="CREATED_BY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="creationDate"
>>         column="CREATION_DATE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="modyfiedBy"
>>         column="MODYFIED_BY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="modyficationDate"
>>         column="MODYFICATION_DATE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <reference-descriptor
>>         name="addressType"
>>         class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>>     >
>>         <foreignkey field-ref="address2addressType"/>
>>     </reference-descriptor>
>> </class-descriptor>
>> <class-descriptor
>>     class="com.chw.crm.BusinessObject.AddressTypeBO"
>>     table="ADDRESS_TYPE_T"
>> 
>>> 
>>     <field-descriptor
>>         name="objid"
>>         column="OBJID"
>>         jdbc-type="BIGINT"
>>         primarykey="true"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="description"
>>         column="DESCRIPTION"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="value"
>>         column="VALUE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="uValue"
>>         column="U_VALUE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="isObsolate"
>>         column="IS_OBSOLATE"
>>         jdbc-type="BIGINT"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="createdBy"
>>         column="CREATED_BY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="creationDate"
>>         column="CREATION_DATE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="modyfiedBy"
>>         column="MODYFIED_BY"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>>     <field-descriptor
>>         name="modyficationDate"
>>         column="MODYFICATION_DATE"
>>         jdbc-type="VARCHAR"
>>         length="254"
>>     >
>>     </field-descriptor>
>> </class-descriptor>
>> <class-descriptor
>>     class="com.chw.crm.BusinessObject.BO"
>> 
>>> 
>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
>>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
>> </class-descriptor>
>> 
>> 
>> 
>> 
>> 
>> 
>>                 regards,
>>                 Wojciech Chmielewski
>> 
>> email wojciech.chmielewski@student.sgh.waw.pl mobile 501172125
>> ----------------------------------------------------------------
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-user-help@db.apache.org
>> 
>> 
>> 
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>

-- 
 				pozdrawiam,
 				Wojciech Chmielewski

email wojciech.chmielewski@student.sgh.waw.pl mobile 501172125
----------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: [PersistentField] ERROR: while set field:

Posted by Armin Waibel <ar...@apache.org>.
Hi,

your mapping seems ok. Could you post the generated class-descriptor for
AddressTypeBO and AddressBO too?

Did you try without the 'id' attribute (it's optional) set?
Which version do you use?

regards,
Armin

Wojciech CHMIELEWSKI wrote:

> 
> I'm using ojb since yestarday and I experience  some problems ...
> when I use ojb for one class which takes date from one table everything 
> is ok, the problem begins when I have object o1 of a type  AddressBO 
> which has an object o2 of a type AddressTypeBO and I want to take o1 and 
> of course have o2 filled.
> 
> And of course, when I want to do this I get error.
> 
> Any help is appreciated :)
> 
> I attached :
> 1) errorr description
> 2) java classes
> 3) repository.xml
> 
> 1) I get this type of error :
> 
> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: Creating 
> RsIterator for class [com.chw.crm.BusinessObject.AddressBO]
> [org.apache.ojb.broker.core.PersistenceBrokerImpl] DEBUG: 
> getObjectByIdentity com.chw.crm.BusinessObject.BO{2}
> [PersistentField] ERROR: while set field:
> [try to set 'object value' in 'target object'
> target obj class: com.chw.crm.BusinessObject.AddressBO
> target field name: addressType
> target field type: class com.chw.crm.BusinessObject.AddressTypeBO
> object value class: com.chw.crm.BusinessObject.AddressBO
> object value: com.chw.crm.BusinessObject.AddressBO@abe654
> ]
> null
> java.lang.IllegalArgumentException
>     at 
> sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) 
> 
>     at java.lang.reflect.Field.set(Field.java:519)
>     at 
> org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDirectAccessImpl.doSet(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.metadata.fieldaccess.AbstractPersistentField.set(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(Unknown 
> Source)
>     at org.apache.ojb.broker.accesslayer.RsIterator.next(Unknown Source)
>     at 
> org.apache.ojb.broker.core.PersistenceBrokerImpl.getObjectByQuery(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
> Source)
>     at 
> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getObjectByQuery(Unknown 
> Source)
>     at 
> com.chw.crm.DAO.BusinessObjectDAO.OracleBusinessObjectDAO.OracleAddressDAO.getAddressBO(OracleAddressDAO.java:44) 
> 
>     at com.chw.crm.Action.TestAction.execute(TestAction.java:43)
> 
> 2) java code (not all only needed fragments)
> 
> 
> package com.chw.crm.BusinessObject;
> 
> import java.io.Serializable;
> 
> /**
>  * @author Administrator
>  *
>  * @ojb.class generate-table-info="false"
>  */
> 
> public class BO implements Serializable {
> 
> }
> 
> 
> package com.chw.crm.BusinessObject;
> 
> /**
>  * @ojb.class table="ADDRESS_T"
>  *
>  */
> 
> public class AddressBO extends BO {
> 
> 
>     /**
>      * @ojb.field column="OBJID"
>      *            jdbc-type="BIGINT"
>      *            primarykey="true"
>      *            id="1"
>      */
>     private long objid;
> 
>     /**
>      * @ojb.field column="ADDRESS2STATUS"
>      *            jdbc-type="BIGINT"
>      *            id="2"
>      */
>     private long address2status;
> 
>     /**
>      * @ojb.reference class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>      * foreignkey="address2addressType"
>      *
>      */
>     private AddressTypeBO addressType;
> 
>     /**
>      *
>      * @ojb.field column="ADDRESS2ADDRESS_TYPE"
>      *            jdbc-type="BIGINT"
>      *            id="3"
>      *
>      */
>     private long address2addressType;
> 
> 
> package com.chw.crm.BusinessObject;
> /**
>  * @ojb.class table="ADDRESS_TYPE_T"
>  *            include-inherited="true"
>  */
> 
> public class AddressTypeBO extends BO {
> 
> 
>     /**
>      * @ojb.field column="OBJID"
>      *            jdbc-type="BIGINT"
>      *            primarykey="true"
>      *            id="1"
>      */
>     private long objid;
> 
>     /**
>      * @ojb.field column="DESCRIPTION"
>      *            jdbc-type="VARCHAR"
>      *            id="2"
>      */
>     private String description;
> 
>     /**
>      * @ojb.field column="VALUE"
>      *            jdbc-type="VARCHAR"
>      *            id="3"
>      */
>     private String value;
> 
> 
> 
> public class OracleAddressDAO implements AddressDAO {
> 
>     public AddressBO getAddressBO(int objid){
> 
>         AddressBO bo = new AddressBO();
> 
>         PersistenceBroker broker;
> 
>         try {
> 
>             broker = OracleDAOFactory.getTheBroker();
> 
>             broker.beginTransaction();
> 
>             Criteria c = new Criteria();
>             c.addEqualTo("objid", new Integer( objid ) );
>             Query query = new QueryByCriteria( AddressBO.class , c );
> 
> ---------->>>> error IS  HERE  !!!
> 
>             try {
>                 bo = (AddressBO)broker.getObjectByQuery( query );
>             } catch (PersistenceBrokerException e1) {
> 
> 
> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>                 System.out.println( e1.getMessage() );
> 
> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>                 System.out.println( e1.getSourceException().toString() );
> 
> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>                 System.out.println( e1.getCause() );
> 
> System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
>                 e1.printStackTrace();
> 
>             }
> 
>             /*Iterator iter = broker.getIteratorByQuery(query);
> 
>             if (iter.hasNext())
>                 bo = (AddressBO)iter.next();
>             */
>             broker.commitTransaction();
>             broker.clearCache();
> 
>             System.out.println("###222###bo to:"+bo.getObjid()+" :: 
> "+bo.getStreet() );
> 
>         } catch (PBFactoryException e) {
> 
>             e.printStackTrace();
>         }
> 
>         return bo;
>     }
> 
> 
> 
> 3) repository file
> 
> <!-- file containing the repository descriptions for user-defined types -->
> <!-- Generated by the xdoclet-ojb module -->
> 
> <class-descriptor
>     class="com.chw.crm.BusinessObject.AddressBO"
>     table="ADDRESS_T"
> 
>>
>     <field-descriptor
>         name="objid"
>         column="OBJID"
>         jdbc-type="BIGINT"
>         primarykey="true"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="address2status"
>         column="ADDRESS2STATUS"
>         jdbc-type="BIGINT"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="address2addressType"
>         column="ADDRESS2ADDRESS_TYPE"
>         jdbc-type="BIGINT"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="description"
>         column="DESCRIPTION"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="street"
>         column="STREET"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="house"
>         column="HOUSE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="apartment"
>         column="APARTMENT"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="zipcode"
>         column="ZIPCODE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="city"
>         column="CITY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="postName"
>         column="POST_NAME"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="country"
>         column="COUNTRY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="area"
>         column="AREA"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="region"
>         column="REGION"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="shortAddress"
>         column="SHORT_ADDRESS"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="mediumAddress"
>         column="MEDIUM_ADDRESS"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="fullAddress"
>         column="FULL_ADDRESS"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="valid"
>         column="VALID"
>         jdbc-type="BIGINT"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="isObsolate"
>         column="IS_OBSOLATE"
>         jdbc-type="BIGINT"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="createdBy"
>         column="CREATED_BY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="creationDate"
>         column="CREATION_DATE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="modyfiedBy"
>         column="MODYFIED_BY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="modyficationDate"
>         column="MODYFICATION_DATE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <reference-descriptor
>         name="addressType"
>         class-ref="com.chw.crm.BusinessObject.AddressTypeBO"
>     >
>         <foreignkey field-ref="address2addressType"/>
>     </reference-descriptor>
> </class-descriptor>
> <class-descriptor
>     class="com.chw.crm.BusinessObject.AddressTypeBO"
>     table="ADDRESS_TYPE_T"
> 
>>
>     <field-descriptor
>         name="objid"
>         column="OBJID"
>         jdbc-type="BIGINT"
>         primarykey="true"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="description"
>         column="DESCRIPTION"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="value"
>         column="VALUE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="uValue"
>         column="U_VALUE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="isObsolate"
>         column="IS_OBSOLATE"
>         jdbc-type="BIGINT"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="createdBy"
>         column="CREATED_BY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="creationDate"
>         column="CREATION_DATE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="modyfiedBy"
>         column="MODYFIED_BY"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
>     <field-descriptor
>         name="modyficationDate"
>         column="MODYFICATION_DATE"
>         jdbc-type="VARCHAR"
>         length="254"
>     >
>     </field-descriptor>
> </class-descriptor>
> <class-descriptor
>     class="com.chw.crm.BusinessObject.BO"
> 
>>
>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressBO"/>
>     <extent-class class-ref="com.chw.crm.BusinessObject.AddressTypeBO"/>
> </class-descriptor>
> 
> 
> 
> 
> 
> 
>                 regards,
>                 Wojciech Chmielewski
> 
> email wojciech.chmielewski@student.sgh.waw.pl mobile 501172125
> ----------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org