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/