ejb@glassfish.java.net

Re: _at_NamedQuery for finding details from more than 1 column

From: Eve Pokua <gorgeous65_at_msn.com>
Date: Wed, 09 May 2007 10:06:44 +0100

Hello everyone,

Wouter,
marina,
Michael,

I have read all your comments and I have willing to try it on, though I
nearly gave up all the idea.
This is what I have done so far but I would like to change it to make the
client/User experience a lot
more simpler:

In my Iteamdetailsent entity I have the following queries:

@NamedQuery(name = "GetItemsbydescption",query = "SELECT i FROM
Iteamdetailsent i WHERE i.description= :description"),

@NamedQuery(name = "Getitemswithname",query = "SELECT i FROM Iteamdetailsent
i WHERE i.itmname= :itmname"),


I my implementation I have the following methods:

//retrieving items by name
        public List<Iteamdetailhlp> Itemname(String itmname){
        //public String AllItemname(String itemnames){
             List<Iteamdetailsent> iteamdetailsent=null;

                try{

                        iteamdetailsent=(List<Iteamdetailsent>)
em.createNamedQuery("Getitemswithname").setParameter("itmname",
itmname).getResultList();
                        //.setParameter("yes", "Discount").getResultList();

                }catch(Exception ex){
                        System.err.println("Can not get items details by name. Name entered not
recogniced");

                }//end of catch
                 return copyToDetails(iteamdetailsent);
        }//end of Itemname(String itmname)





public Iteamdetailsent Itemsbyid(String itmid){
            Iteamdetailsent iteamdetailsent=new Iteamdetailsent();
                try{

                         iteamdetailsent=em.find(Iteamdetailsent.class, itmid);


                }catch(Exception ex){
                        System.err.println("Can not access DB");

                }//end of catch
                 return iteamdetailsent;
        }//end of Itemsbyid



public List<Iteamdetailhlp> DescriptItem(String description){
             List<Iteamdetailsent> iteamdetailsent=null;

                try{

                        iteamdetailsent=(List<Iteamdetailsent>)
em.createNamedQuery("GetItemsbydescption").setParameter("description",
description).getResultList();

                }catch(Exception ex){
                        System.err.println("Can not get items details by Description entered.
Name entered not recogniced");

                }//end of catch
                 return copyToDetails(iteamdetailsent);
        }//end of DescriptItem


The above will separate the parameters.

In the client I have the following:

out.println("<form method='get' action='AllItemsser'>");
                        out.println("Find item by description/Code: <input
type=\"text\" name=\"finddescodetxt\">");
                        out.println("<select name='finddescodename'>");
                        out.println("<option>by itemcode</option>");
                        out.println("<option>by item description</option>");
                        out.println("<option>by item name</option>");
                        out.println("</select>");
                        out.println("<input type='Submit' value='Find'
name='find'/>");

                        out.println("</form>");


String finddescode=request.getParameter("finddescodetxt");
         if (finddescode!= null && findbydescodename.equals("by
itemcode")){
                           try{

                               InitialContext ctx=new InitialContext();

                                Iteamdetails
iteamdetails=(Iteamdetails)ctx.lookup("IteamdetailsBeanJNDI");
                                Iteamdetailsent
iteamdetailsent=iteamdetails.Itemsbyid(finddescode);
                                
//iteamdetailhlp=iteamdetails.DescriptItem("table");

                        out.println("<TABLE BORDER='1' CELLPADDING='3'
CELLSPACING='1'>");
                                  out.println("<TR>");
                                                out.println("<td>"
+"Itemcode");out.println("<td>" +"Name"); out.println("<td>"
+"Description"); out.println("<td>" +"Size"); out.println("<td>"
+"Colour");out.println("<td>" +"Price");out.println("</td>");
                                out.println("</TR>");



                                out.println("<TR>");

                        
                        out.println("<td>");out.println(iteamdetailsent.getitmid());out.println("</td>");
                                                
out.println("<td>");out.println(iteamdetailsent.getitmname());out.println("</td>");
                                               
out.println("<td>");out.println(iteamdetailsent.getdescription());out.println("</td>");
                                               
out.println("<td>");out.println(iteamdetailsent.getitemsize());out.println("</td>");
                                               
out.println("<td>");out.println(iteamdetailsent.getcolour());out.println("</td>");
                                                
out.println("<td>");out.println(iteamdetailsent.getprice());out.println("</td>");
                                    out.println("</td>");


                            out.println("</TR>");
            out.println("</TABLE>");
                            }catch(Exception ex){

                        System.err.println("Can not access DB");
                        }}
         else if (finddescode!= null && findbydescodename.equals("by item
description")){
                           try{

                               InitialContext ctx=new InitialContext();
                                Iteamdetails
iteamdetails=(Iteamdetails)ctx.lookup("IteamdetailsBeanJNDI");
                                
iteamdetailhlp=iteamdetails.DescriptItem(finddescode);

                        out.println("<TABLE BORDER='1' CELLPADDING='3'
CELLSPACING='1'>");
                                  out.println("<TR>");
                                                out.println("<td>"
+"Itemcode");out.println("<td>" +"Name"); out.println("<td>"
+"Description"); out.println("<td>" +"Size"); out.println("<td>"
+"Colour");out.println("<td>" +"Price");out.println("</td>");
                                out.println("</TR>");

                                for(Iteamdetailhlp itemlist:
iteamdetailhlp){

                                out.println("<TR>");

                        
                        out.println("<td>");out.println(itemlist.getitmid());out.println("</td>");
                                                
out.println("<td>");out.println(itemlist.getitmname());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getdescription());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getitemsize());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getcolour());out.println("</td>");
                                                
out.println("<td>");out.println(itemlist.getprice());out.println("</td>");
                                    out.println("</td>");}

                            out.println("</TR>");
            out.println("</TABLE>");
                            }catch(Exception ex){

                        System.err.println("Can not access DB");
                        }}

        else if (finddescode!= null && findbydescodename.equals("by item
name")){
                           try{

                               InitialContext ctx=new InitialContext();
                                Iteamdetails
iteamdetails=(Iteamdetails)ctx.lookup("IteamdetailsBeanJNDI");
                                
iteamdetailhlp=iteamdetails.Itemname(finddescode);

                        out.println("<TABLE BORDER='1' CELLPADDING='3'
CELLSPACING='1'>");
                                  out.println("<TR>");
                                                out.println("<td>"
+"Itemcode");out.println("<td>" +"Name"); out.println("<td>"
+"Description"); out.println("<td>" +"Size"); out.println("<td>"
+"Colour");out.println("<td>" +"Price");out.println("</td>");
                                out.println("</TR>");

                                for(Iteamdetailhlp itemlist:
iteamdetailhlp){

                                out.println("<TR>");

                        
                        out.println("<td>");out.println(itemlist.getitmid());out.println("</td>");
                                                
out.println("<td>");out.println(itemlist.getitmname());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getdescription());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getitemsize());out.println("</td>");
                                               
out.println("<td>");out.println(itemlist.getcolour());out.println("</td>");
                                                
out.println("<td>");out.println(itemlist.getprice());out.println("</td>");
                                    out.println("</td>");}

                            out.println("</TR>");
            out.println("</TABLE>");
                            }catch(Exception ex){

                        System.err.println("Can not access DB");
                        }}


So to cut things short, I wanted to call upon one implementation method
which uses one query like you have suggested. I will make some changes and
let you all know the outcome.

Thanks for all you help.

eve


>From: Wouter van Reeven <wouter_at_van.reeven.nl>
>Reply-To: persistence_at_glassfish.dev.java.net
>To: persistence_at_glassfish.dev.java.net
>Subject: Re: @NamedQuery for finding details from more than 1 column
>Date: Tue, 8 May 2007 23:00:54 +0200
>
>On Tue, May 08, 2007 at 09:42:08PM +0200, Michael Bouschen wrote:
> > I think your query works. The actual value of the input parameter might
> > include the wild card, e.g. q.setParameter("param", "hello%").
>
>Hmmm interesting thought. My experience so far with e.g. Oracle's ADF
>framework
>has led me to believe that the % in the query will be taken literally since
>it's
>part of the parameter and not concatted to the parameter. For some reason
>this
>is different in ADF. I'll have a look at this to see what happens.
>
>
>Thanks, Wouter
>
>--
>
>People: "If she weighs the same as a Duck, she's made of wood!"
>Sir Bedevere: "And therefore...?"

_________________________________________________________________
Txt a lot? Get Messenger FREE on your mobile.
https://livemessenger.mobile.uk.msn.com/