Hello Andrus,
I've ran a debugger and found the following:
====================
(SelectObserver.java)
static Map partitionBySource(ObjRelationship incoming, List 
prefetchedObjects) {
....
Map toManyLists = MapUtils.lazyMap(new HashMap(), listFactory);
         Iterator destIterator = prefetchedObjects.iterator();
         while (destIterator.hasNext()) {
             DataObject destinationObject = (DataObject) destIterator.next();
             DataObject sourceObject = null;
             if (reverseRelationship != null) {
                 sourceObject =
                     (DataObject) destinationObject.readProperty(
                         reverseRelationship.getName());
             }
....
}
====================
When the debugger enters the iterator for the first time the following is true:
====================
"destinationObject" is of type "freesite.project.Project".
reverseRelationship (objNam: java.lang.String = "galleries", 
targetEntityName: java.lang.String = "Gallery")
====================
When the following code get executed:
====================
(DataObject) destinationObject.readProperty(
                         reverseRelationship.getName());
====================
The following function is called:
====================
(CayenneDataObject.java)
public Object readProperty(String propName) {
         resolveFault();
         Object object = readPropertyDirectly(propName);
         // must resolve faults immediately
         if (object instanceof Fault) {
             object = ((Fault) object).resolveFault(this, propName);
             writePropertyDirectly(propName, object);
         }
         return object;
     }
=====================
The "propName" parameter has value "galleries".
The returned "object" is of type 
"org.objectstyle.cayenne.access.ToManyList" (relationship: java.lang.String 
= "galleries", source: org.objectstyle.cayenne.DataObject = 
"{freesite.project.Project}")
I suspect that the ClassCastException is thrown when the code tries to cast 
a "ToManyList" to a "DataObject". Which isn't possible ;-)
Twan
At 23:04 23-11-2004, you wrote:
> > Is there a known problem when using
> > "QueryUtils.selectRelationshipObjects"  in combination with
> > "addPrefetch"?
>
>Not known to me ;-) QueryUtils methods are mostly used for internal
>Cayenne tasks, so they are not tested with all possible usage scenarios.
>
>Can you run this in debugger to tell what class is actually returned?
>Default Java behavior of throwing ClassCastException without specifying
>what class caused it is not that helpful.
>
>Thanks
>Andrus
>
>
> >
> > Because i have a function which uses those 2 functions:
> > =============
> > public List findAllWithExp(GalleryCategory cat) {
> >     SelectQuery query = QueryUtils.selectRelationshipObjects(_context,
> > cat,
> > "galleries");
> >     query.addPrefetch("projecten");
> >
> >     return _context.performQuery(query);
> >   }
> > =============
> >
> > GalleryCategory (variable cat) has zero or more Gallery objects
> > (many-to-many relationship). Those Gallery objects can be reached by the
> >  "galleries" relationship of GalleryCategory:
> > =============
> > SelectQuery query = QueryUtils.selectRelationshipObjects(_context, cat,
> > "galleries");
> > =============
> > The above code return all Gallery objects of "cat" (a GalleryCategory).
> > This works perfect.
> >
> > But when i add a prefetch to my selectquery i receive a
> > classcastexception: =============
> > java.lang.ClassCastException
> >       at
> > 
> org.objectstyle.cayenne.access.util.SelectObserver.partitionBySource(SelectObserver.java:253)
> >       at
> >
This archive was generated by hypermail 2.0.0 : Wed Nov 24 2004 - 03:38:50 EST