As long as you're happy, we're happy too! ;-)

Matt

On 2/19/07, Dorothy Turner <[EMAIL PROTECTED]> wrote:
I think I figured out a solution....I added comment.setCompetition( arch )
to the code below in my action class.  Not sure if this is the best solution
but it works and I'm happy.


 Comment comment = new Comment();
        comment.setDate(valueDate);
        comment.setCopy(valueCopy);
        comment.setUser(valueUser);
        comment.setCompetition( arch );

        arch.getComments().add(comment);
        mgr.saveArch(arch);





On 2/19/07, Dorothy Turner < [EMAIL PROTECTED]> wrote:
> Hello -
>
>
> I have 3 pojos Arch, Feature and Comment.  I have one-to-many
relationships between Arch and Comment and Feature and Comment.
>
> Here is the xdoclet code from Arch (identical to setup in Feature) :
>
>     /**
>      * @hibernate.bag cascade="all" lazy="false" order-by="date"
>      * @hibernate.collection-key column="competition"
>      * @hibernate.collection-one-to-many
class="org.dba.model.Comment"
>      * @struts.form-field
>      */
>     public List getComments()
>     {
>       return comments;
>     }
>
>
> Here is the xdoclet code from Comment:
>
>
>     /**
>      * Returns a reference to the pojo it belongs to
>      * @hibernate.many-to-one column="competition"
>      *                        class="org.dba.model.Arch"
>      *                        cascade="none"
>      */
>     public Arch getCompetition() {
>         return competition;
>     }
>     public void setCompetition(Arch competition) {
>         this.competition = competition;
>     }
>
>
>
> User's may add comments via a form from a public page.  This form calls a
method in ArchAction called addCommentPublic.  See below:
>
>
>  public ActionForward addCommentPublic(ActionMapping mapping, ActionForm
form,
>             HttpServletRequest request, HttpServletResponse response)
>             throws Exception {
>
>         ArchForm archForm = (ArchForm)form;
>         ArchManager mgr = (ArchManager) getBean("archManager");
>         Arch arch = mgr.getArch(archForm.getId());
>
>         Date valueDate = new Date();
>         String valueCopy = request.getParameter ("newCommentCopy");
>         String valueUser = "anonymous";
>
>         Comment comment = new Comment();
>         comment.setDate(valueDate);
>         comment.setCopy(valueCopy);
>         comment.setUser(valueUser);
>         arch.getComments().add(comment);
>
>         mgr.saveArch(arch);
>         ArchForm archFormNew = (ArchForm) convert(arch);
>         updateFormBean(mapping, request, archFormNew);
>
StartupListener.reloadComments(getServlet().getServletContext());
>         return mapping.findForward("view");
>
>     }
>
>
>
> I also have on the homepage a list of the 10 most recent comments
submited..which should link to their respective parent ie.  some should link
to a arch detail view and some should link to a feature detail view.
>
> I have a method in LookupDAOHibernate called getComments() which is called
from the startup listener.  it is also called when a user adds a comment.
The comments are sorted in descending order.... In LookupManagerImpl I'm
returning a list of wrapper objects that mirror the comment objects.  I did
this so that I could store the id's numbers of the parent objects....and
make them accessible from my jsp pages.   below are the lookup functions.
>
> LookupDAOHibernate:
>     public List getComments() {
>         if (log.isDebugEnabled()) {
>             log.debug("retrieving all last 5 Comments...");
>         }
>
>         DetachedCriteria criteria =
DetachedCriteria.forClass(Comment.class);
>         criteria.addOrder(Order.desc("date"));
>         int offset = 0;
>         int count = 5;
>         return
getHibernateTemplate().findByCriteria(criteria, offset,
count);
>
>
>     }
>
>  LookupManagerImpl:
>
>         public List getAllComments() {
>
>
>         //return dao.getComments();
>
>
>         List    comments     = dao.getComments();
>         List   toReturn = new ArrayList();
>         for (Iterator iter = comments.iterator(); iter.hasNext();)
>           {
>           Comment       comment       = (Comment) iter.next();
>           CommentDetail commentDetail = new CommentDetail(comment);
>           toReturn.add(commentDetail);
>           }
>         return toReturn;
>
>
>     }
>
>
> When a new comment is added, a reload function is called in the
startupListener which triggers the getComments() method in LookupManagerImpl
and LookupDAOHibernate....refreshing the last 10 comments
list....
>
> my problem is that the very first comment in the list (which is really the
last comment added) does not have a reference to the id number of it's
parent....although the id number is present in the database..  If i save the
parent object through the web-based form...the context is reloaded and the
id number appears.  Any tips would be greatly appreciated.
>
>
> This application is based on 1.8.2
> Using default setup - struts, mysql
> Working on Windows
> Using Tomcat 5
>
>
>
> Best,
> Dorothy
>




--
http://raibledesigns.com

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

Reply via email to