Worked like a charm!  

Thank you Michael.


Michael Horwitz wrote:
> 
> You probably need to specify the return parameter from the query. I think
> Hibernate is returning both the annotation and the OSBObject. So
> 
> Select ann From Annotation ann join ann.related_OSBObjects as osb where
> osb.id = :osbId
> 
> Mike.
> 
> On 3/30/07, maskkkk <[EMAIL PROTECTED]> wrote:
>>
>>
>> Okay now I seem to be able to get the Annotation objects retrieved but I
>> can't seem to cast them from objects into Annotations...
>>
>>
>> new dao method wrote:
>> >
>> >       public List<Annotation> getAnnotationsForOsbBaseObjectId(Long
>> osbId)
>> >       {
>> >                       log.info("Begin:
>> getAnnotationsForOsbBaseObjectId()");
>> > //                    List find = getHibernateTemplate().find("From
>> Annotation ann join
>> > ann.related_OSBObjects as osb where osb.id = :osbId", osbId);
>> > //                    List <Annotation> list =  find;
>> >
>> >
>> >                       String queryString = "From Annotation ann join
>> ann.related_OSBObjects
>> > as osb where osb.id = :osbId";
>> >
>> >                       List <Annotation> list =
>> getSession().createQuery(queryString)
>> >                                                       .setLong("osbId",
>> osbId)
>> >                                                       .list();
>> >
>> >                       if(list.isEmpty())
>> >                       {
>> >                               throw new
>> ObjectRetrievalFailureException(
>> Annotation.class,
>> >                                                                            
>> >              
>> new
>> String(
>> >                                                       "Annotations not
>> found for query " + queryString +
>> >                                                       "with arguments
>> osbId: " + osbId));
>> >
>> >                       }
>> >
>> >
>> >                       log.info("Exit:
>> getAnnotationsForOsbBaseObjectId()");
>> >                       return list;
>> >       }
>> >
>>
>>
>> test method where the dao dies wrote:
>> >
>> >    public void testGetAnnotationsForOsbBaseObjectId()
>> >    {
>> >          testAnnotation = null;
>> >
>> >          List <Annotation> annotationList = null;
>> >          annotationList = dao.getAnnotationsForOsbBaseObjectId
>> (TEST_VERSE_ID);
>> >
>> >          assertNotNull(annotationList);
>> >          assertTrue(annotationList.size() > 0);
>> >
>> >           // Dies when casting the object I retireved to an Annotation.
>> >          Object o = (Annotation) annotationList.iterator().next(); //
>> <-- DIES
>> > HERE...
>> >          log.debug(o);
>> >
>> >          //testAnnotation = o;
>> >          //assertEquals("Verse Sample Annotation 1",
>> > testAnnotation.getWiki_text());
>> >
>> >    }
>> >
>>
>>
>> Stack Trace wrote:
>> >
>> >     [junit] Testcase:
>> > testGetAnnotationsForOsbBaseObjectId(
>> com.conciliarpress.dao.AnnotationDaoTest):
>> > Caused an ERROR
>> >     [junit] [Ljava.lang.Object;
>> >     [junit] java.lang.ClassCastException: [Ljava.lang.Object;
>> >     [junit] at
>> >
>> com.conciliarpress.dao.AnnotationDaoTest.testGetAnnotationsForOsbBaseObjectId
>> (AnnotationDaoTest.java:78)
>> >     [junit] at
>> > org.springframework.test.ConditionalTestCase.runBare(
>> ConditionalTestCase.java:69)
>> >
>>
>> Could this be a proxy? what with the Ljava.lang.Object?
>>
>>
>> Thank you again,
>>      Andrew J. Leer
>>
>>
>> Michael Horwitz wrote:
>> >
>> > Hmm. It can definitely be done, but not sure the fectch clause is
>> exactly
>> > what you are after. The fetch clause simply forces a lazy loaded
>> > collection
>> > to load when you fetch the parent object. If all you are interested in
>> is
>> > the collection, then simply query for it?
>> >
>> > Something like:
>> >
>> > From Annotation ann join ann.related_OSBObjects as osb where osb.id =
>> > :osbId
>> >
>> > Mike.
>> >
>> > On 3/30/07, maskkkk <[EMAIL PROTECTED]> wrote:
>> >>
>> >>
>> >> Hello I am using Appfuse 1.9.4 to build a project:
>> >>
>> >> The feat I am trying to attempt here is to pass in the id of an
>> >> OSBBaseObject,
>> >> and retrieve all of the Annotations which are associated with it.
>> >>
>> >> There is a collection-many-to-many between the OSBBaseObject and
>> >> Annotation
>> >> classes.
>> >>
>> >> Now I talked to a guy online who told me that it could be done using a
>> >> FETCH
>> >> clause in HQL,
>> >> and thus far this is what I have:
>> >>
>> >>
>> >> what I have so far... wrote:
>> >> >
>> >> > ...
>> >> >       public List<Annotation> getAnnotationsForOsbBaseObjectId(Long
>> >> osbId)
>> >> >       {
>> >> >                       log.info("Begin:
>> >> getAnnotationsForOsbBaseObjectId()");
>> >> >
>> >> >                       //List <Annotation> list
>> >> =  getHibernateTemplate().find("FROM
>> >> > Annotation ann WHERE ann. = ?", osbId);
>> >> >
>> >> >                       List <Annotation> list
>> >> =  getHibernateTemplate().find("SELECT ann FROM
>> >> > Annotation ann FETCH ann.", osbId);
>> >> >                       select p from People p fetch p.friends
>> >> >
>> >> >                       //log.debug("Retrieved " + list.size() + "
>> >> results");
>> >> >
>> >> >                       log.info("Exit:
>> >> getAnnotationsForOsbBaseObjectId()");
>> >> >                       return list;
>> >> >       }
>> >> > ...
>> >> >
>> >>
>> >> And bellow are the relationships as I have them defined in the
>> back-end
>> >> of
>> >> my Appfuse webapp:
>> >>
>> >>
>> >> OSBBaseObject wrote:
>> >> >
>> >> > public abstract class OSBBaseObject extends BaseObject
>> >> > {
>> >> >       private Long id;
>> >> >       /**
>> >> >        * The annotations that are assocated with
>> >> >        * this OSBBaseObject.
>> >> >        *
>> >> >        */
>> >> >       private Set annotations;
>> >> >
>> >> >         ...
>> >> >
>> >> >       /**
>> >> >        *      @hibernate.id
>> >> >        *              column="ID"
>> >> >        *              generator-class="hilo"
>> >> >        *              unsaved-value="null"
>> >> >        */
>> >> >       public Long getId(){ return id; }
>> >> >       public void setId(Long id){     this.id = id;}
>> >> >
>> >> >       /**
>> >> >        * @hibernate.set
>> >> >        *              table="osbobjects_in_annotation"
>> >> >          *            cascade="save-update"
>> >> >          *            inverse="true"
>> >> >          [EMAIL PROTECTED]
>> >> >          *            column="fk_annotation"
>> >> >          *     class="com.conciliarpress.model.Annotation"
>> >> >          * @hibernate.collection-key
>> >> >          *    column="fk_osbbaseobject"
>> >> >          */
>> >> >       public Set getAnnotations(){ return annotations; }
>> >> >       public void setAnnotations(Set a){ this.annotations = a; }
>> >> >       ...
>> >> > }
>> >> >
>> >>
>> >>
>> >> Annotation Class wrote:
>> >> >
>> >> > public class Annotation
>> >> > {
>> >> >       private Long id;
>> >> >       private Set related_OSBObjects;
>> >> >
>> >> >        /**
>> >> >        *      @hibernate.id
>> >> >        *              column="ID"
>> >> >        *              generator-class="hilo"
>> >> >        *              unsaved-value="null"
>> >> >        */
>> >> >       public Long getId() {   return id;      }
>> >> >       public void setId(Long id) {    this.id = id; }
>> >> >
>> >> >    /**
>> >> >      *        @hibernate.set
>> >> >      *                table="osbobjects_in_annotation"
>> >> >      *                cascade="save-update"
>> >> >      [EMAIL PROTECTED]
>> >> >      *                column="fk_osbbaseobject"
>> >> >      *     class="com.conciliarpress.model.OSBBaseObject"
>> >> >      * @hibernate.collection-key
>> >> >      *        column="fk_annotation"
>> >> >      *
>> >> >      */
>> >> >       public Set getRelated_OSBObjects() {    return
>> >> related_OSBObjects;      }
>> >> >       public void setRelated_OSBObjects(Set related_OSBObjects)
>> >> > {this.related_OSBObjects = related_OSBObjects;        }
>> >> >
>> >> > }
>> >> >
>> >>
>> >> Can this type of relationship be retrieved in HQL?  Or am I required
>> to
>> >> make
>> >> use of proxies?
>> >>
>> >> Thank you,
>> >>    Andrew J. Leer
>> >> --
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Retrieving-a-May-to-many-relationship--tf3492039s2369.html#a9752623
>> >> Sent from the AppFuse - User mailing list archive at Nabble.com.
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> >> For additional commands, e-mail: [EMAIL PROTECTED]
>> >>
>> >>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Retrieving-a-May-to-many-relationship--tf3492039s2369.html#a9756419
>> Sent from the AppFuse - User mailing list archive at Nabble.com.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Retrieving-a-May-to-many-relationship--tf3492039s2369.html#a9757503
Sent from the AppFuse - User mailing list archive at Nabble.com.

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

Reply via email to