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]