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



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



Reply via email to