You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by ro...@bowtech.com on 2003/08/09 15:45:11 UTC
collection-descriptor: Incorrect field reference "null" in org.apache.ojb.broker.metadata.CollectionDescriptor
Hi All,
Am getting the following exception when trying to save a MemberVO with a vector containing an AddressVO
javax.servlet.ServletException: Incorrect field reference "null" in org.apache.ojb.broker.metadata.CollectionDescriptor@5aebd9[cascade delete=false,cascade retrieve=true,cascade store=true,is lazy=false,class of Items=class com.bowtech.ojb.domainmodel.om.AddressVO]
at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:541)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:482)
<class-descriptor class="com.bowtech.ojb.domainmodel.om.MemberVO" table="MEMBERS">
<field-descriptor name="id" column="id" jdbc-type="BIGINT" primarykey="true" autoincrement="true"/>
<field-descriptor name="memberNum" column="memberNum" jdbc-type="VARCHAR"/>
<field-descriptor name="firstName" column="firstName" jdbc-type="VARCHAR"/>
<field-descriptor name="lastName" column="lastName" jdbc-type="VARCHAR"/>
<field-descriptor name="suffix" column="suffix" jdbc-type="VARCHAR"/>
<collection-descriptor name="addresses" element-class-ref="com.bowtech.ojb.domainmodel.om.AddressVO" auto- retrieve="true" auto-update="true">
<inverse-foreignkey field-id="memberId"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor class="com.bowtech.ojb.domainmodel.om.AddressVO" table="ADDRESSES">
<field-descriptor name="id" column="id" jdbc-type="BIGINT" primarykey="true" autoincrement="true"/>
<field-descriptor name="address1" column="address1" jdbc-type="VARCHAR"/>
<field-descriptor name="address2" column="address2" jdbc-type="VARCHAR"/>
<field-descriptor name="city" column="city" jdbc-type="VARCHAR"/>
<field-descriptor name="stateId" column="stateId" jdbc-type="INTEGER"/>
<field-descriptor name="countryId" column="countryId" jdbc-type="INTEGER"/>
<field-descriptor name="memberId" column="memberId" jdbc-type="BIGINT"/>
<!-- etc.... --->
</class-descriptor>
where
addresses is Vector in MemberVO
memberID is Long in AddressVO
broker code is below
Thanks
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,HttpServletResponse response) {
DynaValidatorForm _form = (DynaValidatorForm)form;
MemberVO vo = new MemberVO();
AddressVO address_vo = new AddressVO();
vo.setMemberNum((String)_form.get("memberNum"));
vo.setFirstName((String)_form.get("firstName"));
vo.setLastName((String)_form.get("lastName"));
vo.setSuffix((String)_form.get("suffix"));
// etc....
address_vo.setAddress1((String)_form.get("address1"));
address_vo.setAddress2((String)_form.get("address2"));
address_vo.setCity((String)_form.get("city"));
address_vo.setCountryId(Integer.parseInt(_form.get("countryId").toString()));
//etc...
Vector v = new Vector();
v.add(address_vo);
vo.setAddresses(v);
//insert member into DB
PersistenceBroker broker = null;
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
broker.beginTransaction();
broker.store(vo);
// if I add line broker.store(address_vo) it is stored fine.
broker.commitTransaction();
return mapping.findForward("success");
}
--------------------------------------------------------------
Ross Rotherham