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 Tadeus Garsva <ta...@takas.lt> on 2003/08/01 06:55:40 UTC
Prefetched Relationship for M:N collection
Hi,
Could I use PrefetchedRelationship for M:N nondecomposed collection?
(query.addPrefetchedRelationship("a"), where "a" is a nondecomposed M:N
collection).
I tried, but I got a exception in CollectionPrefetcher.
Thanks in advance.
Best regards
Tadeus Garsva
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
collection-descriptor: Incorrect field reference "null" in org.apache.ojb.broker.metadata.CollectionDescriptor
Posted by ro...@bowtech.com.
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
Re: Broker.store(x) issue
Posted by Armin Waibel <ar...@code-au-lait.de>.
Hi,
did you tried set auto-update="true"?
in
<reference-descriptor name="address1"
class-ref="com.bowtech.ojb.domainmodel.om.AddressVO"
auto-retrieve="true"
auto-update="true"
>
<foreignkey field-ref="id"/>
</reference-descriptor>
regards,
Armin
----- Original Message -----
From: <ro...@bowtech.com>
To: "OJB Users List" <oj...@db.apache.org>
Sent: Saturday, August 09, 2003 1:05 AM
Subject: Broker.store(x) issue
> Have an issue when storing an object where the main object is stored
but
> referenced object isn't. No error is shown.
>
> All information is passed from the form fine.(is in a struts app)
>
> With the following I would expect that the id of an AddressVO
address_vo
> would be stored in field address1 of MemberVO vo.
>
> What am I missing??
>
> DB = MySQL
>
>
>
> 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
()))
> ;
> file://etc...
>
> vo.setAddress1(address_vo);
>
> file://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");
> }
> --------------------------------------------------------------
> <class-descriptor class="com.bowtech.ojb.domainmodel.om.MemberVO"
> table="MEMBERS">
>
> <field-descriptor name="id" column="id" jdbc-type="INTEGER"
> 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"/>
>
> <!-- etc.... -->
>
> <reference-descriptor name="address1"
> class-ref="com.bowtech.ojb.domainmodel.om.AddressVO"
auto-retrieve="true">
>
> <foreignkey field-ref="id"/>
>
> </reference-descriptor>
>
> </class-descriptor>
>
> <class-descriptor class="com.bowtech.ojb.domainmodel.om.AddressVO"
> table="ADDRESSES">
>
> <field-descriptor name="id" column="id" jdbc-type="INTEGER"
> 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"/>
>
>
>
> <!-- etc.... --->
>
> </class-descriptor>
>
>
> Thanks
>
> Ross Rotherham
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Broker.store(x) issue
Posted by ro...@bowtech.com.
Have an issue when storing an object where the main object is stored but
referenced object isn't. No error is shown.
All information is passed from the form fine.(is in a struts app)
With the following I would expect that the id of an AddressVO address_vo
would be stored in field address1 of MemberVO vo.
What am I missing??
DB = MySQL
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...
vo.setAddress1(address_vo);
//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");
}
--------------------------------------------------------------
<class-descriptor class="com.bowtech.ojb.domainmodel.om.MemberVO"
table="MEMBERS">
<field-descriptor name="id" column="id" jdbc-type="INTEGER"
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"/>
<!-- etc.... -->
<reference-descriptor name="address1"
class-ref="com.bowtech.ojb.domainmodel.om.AddressVO" auto-retrieve="true">
<foreignkey field-ref="id"/>
</reference-descriptor>
</class-descriptor>
<class-descriptor class="com.bowtech.ojb.domainmodel.om.AddressVO"
table="ADDRESSES">
<field-descriptor name="id" column="id" jdbc-type="INTEGER"
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"/>
<!-- etc.... --->
</class-descriptor>
Thanks
Ross Rotherham
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: Prefetched Relationship for M:N collection
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi tadeus,
what kind of exception , please !
jakob
Tadeus Garsva wrote:
> Hi,
>
> Could I use PrefetchedRelationship for M:N nondecomposed collection?
> (query.addPrefetchedRelationship("a"), where "a" is a nondecomposed M:N
> collection).
> I tried, but I got a exception in CollectionPrefetcher.
>
> Thanks in advance.
>
> Best regards
>
> Tadeus Garsva
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: Prefetched Relationship for M:N collection
Posted by Tadeus Garsva <ta...@takas.lt>.
Thanks for Your answer.
here uou are stack trace:
java.lang.ArrayIndexOutOfBoundsException: 0
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.buildPrefetchCriteriaMultipleKeys(CollectionPrefetcher.java:184)
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.buildPrefetchQuery(CollectionPrefetcher.java:112)
at
org.apache.ojb.broker.accesslayer.RelationshipPrefetcherImpl.buildPrefetchQueries(RelationshipPrefetcherImpl.java:196)
at
org.apache.ojb.broker.accesslayer.RelationshipPrefetcherImpl.prefetchRelationship(RelationshipPrefetcherImpl.java:138)
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.prefetchRelationship(CollectionPrefetcher.java:261)
at
org.apache.ojb.broker.accesslayer.RsIterator.prefetchRelationships(RsIterator.java:348)
at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:201)
at
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIteratorFactoryImpl.java:95)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(PersistenceBrokerImpl.java:2375)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(PersistenceBrokerImpl.java:1716)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1347)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1519)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1555)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1544)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:317)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:317)
at mesa.TestPrefetched.<init>(TestPrefetched.java:69)
at mesa.TestPrefetched.main(TestPrefetched.java:93)
rethrown as org.apache.ojb.broker.PersistenceBrokerException: 0
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1526)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1555)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1544)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:317)
at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:317)
at mesa.TestPrefetched.<init>(TestPrefetched.java:69)
at mesa.TestPrefetched.main(TestPrefetched.java:93)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.buildPrefetchCriteriaMultipleKeys(CollectionPrefetcher.java:184)
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.buildPrefetchQuery(CollectionPrefetcher.java:112)
at
org.apache.ojb.broker.accesslayer.RelationshipPrefetcherImpl.buildPrefetchQueries(RelationshipPrefetcherImpl.java:196)
at
org.apache.ojb.broker.accesslayer.RelationshipPrefetcherImpl.prefetchRelationship(RelationshipPrefetcherImpl.java:138)
at
org.apache.ojb.broker.accesslayer.CollectionPrefetcher.prefetchRelationship(CollectionPrefetcher.java:261)
at
org.apache.ojb.broker.accesslayer.RsIterator.prefetchRelationships(RsIterator.java:348)
at org.apache.ojb.broker.accesslayer.RsIterator.<init>(RsIterator.java:201)
at
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(RsIteratorFactoryImpl.java:95)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(PersistenceBrokerImpl.java:2375)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(PersistenceBrokerImpl.java:1716)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1347)
at
org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1519)
... 6 more
Best regards
Tadeus Garsva
hi tadeus,
what kind of exception , please !
jakob
Tadeus Garsva wrote:
> Hi,
>
> Could I use PrefetchedRelationship for M:N nondecomposed collection?
> (query.addPrefetchedRelationship("a"), where "a" is a nondecomposed M:N
> collection).
> I tried, but I got a exception in CollectionPrefetcher.
>
> Thanks in advance.
>
> Best regards
>
> Tadeus Garsva
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org