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: [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]




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



Reply via email to