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: [EMAIL PROTECTED]
]
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 [EMAIL PROTECTED] mobile 501172125
----------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]