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 Dan Hanley <da...@magus.co.uk> on 2003/06/02 15:38:21 UTC
RE: Limited collection returned
Jin
Are you also running in a managed environment (e.g. jBoss)?
I suspect the bug you're referring to is:
Type : Defect
Issue Id : OJB172
Reported by: Rob Kischuk
rkischuk - (rkischuk <at> gttx.org)
Details:
Platform: PC
Operating system: windows 2000
Summary: Loading composite object leads to truncated collection
Description: Repeated calls to retrieve a collection of objects that each contain another object are
retrieving truncated results, which are incrementally built to their proper length using repeated
requests.
Status: New
Priority: Undecided
Severity: Major
Functional area: Setup
... which sounds like it could be the culprit. A colleague of mine is trying to trace through with the eclipse debugger to see if we can cast any light on this.
You are not alone, its holding a lot of people up...
Dan
-----Original Message-----
From: Jin Bal [mailto:jinbal@hotmail.com]
Sent: Fri 30/05/2003 22:07
To: OJB Users List
Cc:
Subject: Re: Limited collection returned
I'm also having this problem - thank god someone else's said so ! it's been
driving me mad ;-)
i've been using ojb since 0.9.5 and have only noticed it recently. (sorry
can't be more precise than that)
here's the offending class descriptor
<class-descriptor class="com.buyacar.businessobjects.Vehicle"
table="vehicle">
....blah blah properties etc
<!-- IMAGES -->
<collection-descriptor
name="images"
auto-retrieve="true"
element-class-ref="com.buyacar.businessobjects.VehicleImage">
<inverse-foreignkey field-id-ref="1"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor class="com.buyacar.businessobjects.BACVehicleDetails"
table="bac_details">
<reference-descriptor
name="vehicle"
class-ref="com.buyacar.businessobjects.Vehicle"
auto-retrieve="true">
<foreignkey field-id-ref="2"/>
</reference-descriptor>
</class-descriptor>
whenever I load a BACVehicleDetails (and therefore a Vehicle) I only ever
get one image in the collection.
more over I have a search engine that only returns 1 result the first time
then 2 on the second submit then 3 ......etc :-(
heres the search engine code
PersistenceBroker broker = null;
try {
broker = getBroker();
Criteria criteria = new Criteria();
// check if theyve specified a price bracket
if(searchParams.getMaxPrice() !=null &&
searchParams.getMinPrice()!=null) {
criteria.addBetween("price",searchParams.getMinPrice(),searchParams.getMaxPr
ice());
} else if(searchParams.getMaxPrice()!=null &&
searchParams.getMinPrice()==null) {
criteria.addLessOrEqualThan("price",searchParams.getMaxPrice());
} else if(searchParams.getMaxPrice()==null &&
searchParams.getMinPrice()!=null) {
criteria.addGreaterOrEqualThan("price",searchParams.getMinPrice());
}
if(searchParams.getManufacturer() !=null &&
searchParams.getModel()==null) {
criteria.addEqualTo("vehicle.model.manufacturerId",searchParams.getManufactu
rer());
}
if(searchParams.getModel() !=null) {
criteria.addEqualTo("vehicle.modelId",searchParams.getModel());
}
if(searchParams.getBodyStyle() != null) {
criteria.addEqualTo("vehicle.derivative.bodyStyleId",searchParams.getBodySty
le());
}
if(searchParams.getFuelType() != null) {
criteria.addEqualTo("vehicle.derivative.fuelId",searchParams.getFuelType());
}
if(searchParams.getOrderBy() !=null) {
criteria.addOrderByAscending(searchParams.getOrderBy());
}
if(searchParams.getChannel()!=null &&
!searchParams.getChannel().equals("")) {
criteria.addEqualTo("channel",searchParams.getChannel());
}
criteria.addEqualTo("status",searchParams.getStatus());
criteria.addEqualTo("visibility",searchParams.getVisibility());
criteria.addGreaterOrEqualThan("displayTo",new
java.util.Date());
criteria.addLessOrEqualThan("displayFrom",new java.util.Date());
Query query = new
QueryByCriteria(BACVehicleDetails.class,criteria,true);
Collection c = broker.getCollectionByQuery(query);
logger.debug("collection size: "+c.size());
Iterator results = c.iterator();
ArrayList list = new ArrayList();
while(results.hasNext()) {
// perform cast now to check that we've got the correct
object type
BACVehicleDetails vDetails = (BACVehicleDetails)
results.next();
list.add(vDetails);
}
return list;
} finally {
if (broker!=null) {
broker.close();
}
}
sorry for the long code post
it seems that when the cache is filled up it works ok
help this is stopping me going live with the site :-(
BTW I did a search on the dev list and noticed a bug opened on the 23rd MAy
but i can't find it now
cheers
Jin
----- Original Message -----
From: "McCaffrey, John G." <Jo...@kraft.com>
To: "'OJB Users List'" <oj...@db.apache.org>
Sent: Friday, May 30, 2003 5:52 PM
Subject: RE: Limited collection returned
> yes, I also noticed that, and I tried pre-fetching, but that didn't help
me
> either.
>
> so are you having the same problem then? You are only getting one row
back,
> instead of many?
>
> (my collection is filled properly with the right child elements, but I am
> not getting all of the parents that match the query, and the query is
select
> all parents)
>
> can you see the SQL? I couldn't get P6Spy to work, so I don't know what
the
> sql looks like.
>
> thanks for speaking up, I wonder if anyone else has had/is having this
> problem!
>
> -John
>
> -----Original Message-----
> From: Dan Hanley [mailto:dan@magus.co.uk]
> Sent: Friday, May 30, 2003 11:47 AM
> To: OJB Users List
> Subject: RE: Limited collection returned
>
>
> John
> Setting auto-retrieve = "false" works for me using JBoss & mySQL *except*
> that then I don't get any dependant ojbects loaded :-(
>
>
> -----Original Message-----
> From: McCaffrey, John G. [mailto:John.McCaffrey@kraft.com]
> Sent: 30 May 2003 17:45
> To: 'OJB Users List'
> Subject: RE: Limited collection returned
>
>
> I have been having the same problem. It seems like the initial query
> actually gets all the rows, but the RSIterator only gives you one at a
time.
> In my situation if I have 4 rows that match the query, and I execute the
> query once, I only get one row, each additional time I execute the query I
> get one more row (all previous rows are also returned in the collection).
> This is only happening for a referenced collection, all of my other
queries
> are working fine. I have no Idea what the deal is, I really hope that
> someone can help you.
>
> -John
>
> -----Original Message-----
> From: Ken Dempster [mailto:kdempster@visionsolutions.com]
> Sent: Friday, May 30, 2003 11:38 AM
> To: ojb-user@db.apache.org
> Subject: Limited collection returned
>
>
> Most everything works except I only get one out of the know four row
> objects from the table in my collection. I want to get all the row
> objects in the table. My question is why am I only getting only one row
> object? I am not sure what I am doing something wrong.
>
> Here is how I have things setup. I have set jboss 3.2 as suggested in
> the deployment section of the documentation and have jboss configured it
> with data source to connect to a DB2 database. I am requesting a
> collection from a client to a SessionBean that delegates to a
> PersistenceBroker instance. Basicly I am using the code in
> PersistenceBrokerBean as a template for my EJB. I do generate my own
> JdbcConnectionDescriptor and pass it to the ConnectionRepository instead
> of using the repository.xml to define my JdbcConnectionDescriptor.
>
> My query looks as follows:
> Query query = new QueryByCriteria(Runner.class, null);
>
> Collection list =
> getPersistenceBrokerRemote().getCollectionByQuery(query);
>
>
> My ClassDescriptor of the collection of objects I am trying to get is
> defined in the repository_user.xml as follows :
>
> <class-descriptor class="test.ojb.Runner" table="KENLIB.RUNNER">
>
> <field-descriptor name="m_id" column="ID" jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_name" column="NAME" jdbc-type="VARCHAR"/>
>
> <collection-descriptor name="m_times" element-class-ref="test.ojb.Time">
>
> <inverse-foreignkey field-ref="m_id"/>
>
> </collection-descriptor>
>
> </class-descriptor>
>
> <class-descriptor class="test.ojb.Race" table="KENLIB.RACE">
>
> <field-descriptor name="m_id" column="ID" jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_location" column="LOCATION"
> jdbc-type="VARCHAR"/>
>
> <field-descriptor name="m_date" column="DATE" jdbc-type="DATE"/>
>
> </class-descriptor>
>
> <class-descriptor class="test.ojb.Time" table="KENLIB.RACE_TIME">
>
> <field-descriptor name="m_id" column="ID" jdbc-type="INTEGER"
> primarykey="true" autoincrement="true"/>
>
> <field-descriptor name="m_runner_id" column="RUNNER_ID"
> jdbc-type="INTEGER"/>
>
> <field-descriptor name="m_race_id" column="RACE_ID"
> jdbc-type="INTEGER"/>
>
> <field-descriptor name="m_time" column="TIME" jdbc-type="VARCHAR"/>
>
> <reference-descriptor name="m_race" class-ref="test.ojb.Race">
>
> <foreignkey field-ref="m_race_id"/>
>
> </reference-descriptor>
>
> </class-descriptor>
>
>
>
>
> Ken Dempster
> Programmer Analyst
> Vision Solutions, Inc.
>
> 17911 Von Karman Ave, 5th Floor
> Irvine, CA 92614
> UNITED STATES
>
> Tel: +1 (949) 253-6500
> Fax: +1 (949) 253-6501
> Email: kdempster@visionsolutions.com
> <http://www.visionsolutions.com/>
> Disclaimer - 5/30/2003
> The contents of this e-mail (and any attachments) are confidential, may be
> privileged, and may contain copyright material of Vision Solutions, Inc.
or
> third parties. You may only reproduce or distribute the material if you
are
> expressly authorized by Vision Solutions to do so. If you are not the
> intended recipient, any use, disclosure or copying of this e-mail (and any
> attachments) is unauthorized. If you have received this e-mail in error,
> please immediately delete it and any copies of it from your system and
> notify us via e-mail at helpdesk@visionsolutions.com
>
>
> ---------------------------------------------------------------------
> 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
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org