Hi
I am trying to setup a many to many relationship, where the table that represents the many-to-many relationship cannot be anonymous. It works fine when I insert a value, but when I try to update a value I get the following error:

Incorrect or not found field reference name 'brand_class' in descriptor [EMAIL PROTECTED],cascade_store=none,cascade_delete=none,is_lazy=false,class_of_Items=class creative.beans.BrandClass] for class-descriptor 'creative.beans.BrandParam'

Now, brand_class is a field in the database, so I don't understand what it is complaining about.

Here are the related tables:

CREATE TABLE brand (
   brand_id CHARACTER VARYING(8) NOT NULL,
   brand_name CHARACTER VARYING NOT NULL,
   is_bookable BOOLEAN DEFAULT 'true' NOT NULL,
   agency_code CHARACTER VARYING(8),
   consultant_id CHARACTER VARYING(5),
   webbook_locn CHARACTER VARYING,
   is_white_label BOOLEAN DEFAULT 'true' NOT NULL,
   logo CHARACTER VARYING,
   colour_1 CHARACTER VARYING(6),
   colour_2 CHARACTER VARYING(6),
   enquiry_text CHARACTER VARYING,
   extra_cond CHARACTER VARYING,
   extra_info CHARACTER VARYING,
   contact_details CHARACTER VARYING,
   to_email_addr CHARACTER VARYING,
   from_email_addr CHARACTER VARYING,
   cc_email_addr CHARACTER VARYING,
   PRIMARY KEY (brand_id)
);

CREATE TABLE extra_enq_field (
   id SERIAL NOT NULL,
   brand CHARACTER VARYING(8) NOT NULL,
   label CHARACTER VARYING(15) NOT NULL,
   display_type CHARACTER VARYING(15) NOT NULL,
   PRIMARY KEY (id)
);

CREATE TABLE brand_class (
   id SERIAL NOT NULL,
   label VARCHAR(20) NOT NULL,
   is_required BOOLEAN DEFAULT 'false' NOT NULL,
   PRIMARY KEY(id)
);
CREATE TABLE brand_param (
   brand VARCHAR(8) NOT NULL,
   brand_class integer NOT NULL,
   value VARCHAR,
   PRIMARY KEY(brand, brand_class)
);

I have created classes for all these functions. I will include BrandParam and BrandClass:

public class BrandParam implements Serializable
{

   public BrandParam()
   {
}
   public BrandParam(BrandClass inBrandClass)
   {
   mBrandClass = inBrandClass;
   mId = inBrandClass.getId();
} /* ------------------------------------------------------------------------------------------------------------------------ */ /** Obtain the value. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public String getValue() { return(mValue); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Obtain the brand class. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public BrandClass getBrandClass() { return(mBrandClass); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.getLabel. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public String getLabel() { return(mBrandClass.getLabel()); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.isRequired. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public boolean getIsRequired() { return(mBrandClass.getIsRequired()); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.getId. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public int getId() { return(mId); }
/* ------------------------------------------------------------------------------------------------------------------------ */
   /** Set value.                                                        */
/* ------------------------------------------------------------------------------------------------------------------------ */ public void setValue(String inValue) { mValue = inValue; }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Set BrandClass. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setBrandClass(BrandClass inBrandClass) { mBrandClass = inBrandClass; }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.setLabel. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setLabel(String inLabel) { mBrandClass.setLabel(inLabel); } /* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.setRequired. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setIsRequired(boolean inIsRequired) { mBrandClass.setIsRequired(inIsRequired); } /* ------------------------------------------------------------------------------------------------------------------------ */ /** set Id. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setId(int inId) { mId = inId; } /* ========================================================================================================================= */ /* PRIVATE MEMBERS */ /* ========================================================================================================================= */ private int mId; // Required for OJB binding
   private String    mValue;
   private BrandClass    mBrandClass;
}

public class BrandParam implements Serializable
{

   public BrandParam()
   {
}
   public BrandParam(BrandClass inBrandClass)
   {
   mBrandClass = inBrandClass;
   mId = inBrandClass.getId();
} /* ------------------------------------------------------------------------------------------------------------------------ */ /** Obtain the value. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public String getValue() { return(mValue); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Obtain the brand class. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public BrandClass getBrandClass() { return(mBrandClass); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.getLabel. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public String getLabel() { return(mBrandClass.getLabel()); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.isRequired. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public boolean getIsRequired() { return(mBrandClass.getIsRequired()); }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.getId. */ /* ------------------------------------------------------------------------------------------------------------------------ */

   public int getId() { return(mId); }
/* ------------------------------------------------------------------------------------------------------------------------ */
   /** Set value.                                                        */
/* ------------------------------------------------------------------------------------------------------------------------ */ public void setValue(String inValue) { mValue = inValue; }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Set BrandClass. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setBrandClass(BrandClass inBrandClass) { mBrandClass = inBrandClass; }

/* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.setLabel. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setLabel(String inLabel) { mBrandClass.setLabel(inLabel); } /* ------------------------------------------------------------------------------------------------------------------------ */ /** Wrapper for mBrandClass.setRequired. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setIsRequired(boolean inIsRequired) { mBrandClass.setIsRequired(inIsRequired); } /* ------------------------------------------------------------------------------------------------------------------------ */ /** set Id. */ /* ------------------------------------------------------------------------------------------------------------------------ */ public void setId(int inId) { mId = inId; } /* ========================================================================================================================= */ /* PRIVATE MEMBERS */ /* ========================================================================================================================= */ private int mId; // Required for OJB binding
   private String    mValue;
   private BrandClass    mBrandClass;
}

Here are the relevant mappings:
   <class-descriptor class="creative.beans.Brand" table="brand">
<field-descriptor name="mBrandId" column="brand_id" jdbc-type="VARCHAR" primarykey="true"/> <field-descriptor name="mBrandName" column="brand_name" jdbc-type="VARCHAR"/> <field-descriptor name="mIsBookable" column="is_bookable" jdbc-type="BOOLEAN"/> <field-descriptor name="mAgencyCode" column="agency_code" jdbc-type="VARCHAR"/> <field-descriptor name="mConsultantId" column="consultant_id" jdbc-type="VARCHAR"/> <field-descriptor name="mWebbookLocn" column="webbook_locn" jdbc-type="VARCHAR"/> <field-descriptor name="mIsWhiteLabel" column="is_white_label" jdbc-type="BOOLEAN"/>
   <field-descriptor name="mLogo" column="logo" jdbc-type="VARCHAR"/>
<field-descriptor name="mColour1" column="colour_1" jdbc-type="VARCHAR"/> <field-descriptor name="mColour2" column="colour_2" jdbc-type="VARCHAR"/> <field-descriptor name="mEnquiryText" column="enquiry_text" jdbc-type="VARCHAR"/> <field-descriptor name="mExtraCond" column="extra_cond" jdbc-type="VARCHAR"/> <field-descriptor name="mExtraInfo" column="extra_info" jdbc-type="VARCHAR"/> <field-descriptor name="mContactDetails" column="contact_details" jdbc-type="VARCHAR"/> <field-descriptor name="mToEmailAddr" column="to_email_addr" jdbc-type="VARCHAR"/> <field-descriptor name="mFromEmailAddr" column="from_email_addr" jdbc-type="VARCHAR"/> <field-descriptor name="mCcEmailAddr" column="cc_email_addr" jdbc-type="VARCHAR"/>

<collection-descriptor name="mBrandParams" element-class-ref="creative.beans.BrandParam" auto-retrieve="true"
   auto-update="true" auto-delete="true">
       <inverse-foreignkey field-ref="brand"/>
   </collection-descriptor>

<collection-descriptor name="mExtraEnqFields" element-class-ref="creative.beans.ExtraEnqField" auto-retrieve="true"
   auto-update="true" auto-delete="true">
       <inverse-foreignkey field-ref="brand"/>
</collection-descriptor> </class-descriptor> <class-descriptor class="creative.beans.BrandParam" table="brand_param"> <field-descriptor name="brand" column="brand" jdbc-type="INTEGER" primarykey="true" default-fetch="true"
   access="anonymous"/>
<field-descriptor name="mId" column="brand_class" jdbc-type="INTEGER" primarykey="true"/>
       <field-descriptor name="mValue" column="value" jdbc-type="VARCHAR"/>
<reference-descriptor name="mBrandClass" class-ref="creative.beans.BrandClass" auto-update="none" auto-delete="none"
   auto-retrieve="true">
       <foreignkey field-ref="brand_class"/>
   </reference-descriptor>
   </class-descriptor>

   <class-descriptor class="creative.beans.BrandClass" table="brand_class">
<field-descriptor name="mId" column="id" jdbc-type="INTEGER" primarykey="true" autoincrement="true"
   sequence-name="brand_class_id_seq"/>
   <field-descriptor name="mLabel" column="label" jdbc-type="VARCHAR"/>
<field-descriptor name="mIsRequired" column="is_required" jdbc-type="BOOLEAN"/>
   </class-descriptor>

<class-descriptor class="creative.beans.ExtraEnqField" table="extra_enq_field"> <field-descriptor name="brand" column="brand" jdbc-type="VARCHAR" default-fetch="true" access="anonymous"/> <field-descriptor name="mId" column="id" jdbc-type="INTEGER" primarykey="true" autoincrement="true"
   sequence-name="extra_enq_field_id_seq"/>
   <field-descriptor name="mLabel" column="label" jdbc-type="VARCHAR"/>
<field-descriptor name="mDisplayType" column="display_type" jdbc-type="VARCHAR"/> </class-descriptor>
Any help would be appreciated.

--
Kamal Bhatt


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

Reply via email to