While the suggestions to trick EJB into supporting arbitrary queries
have sometimes been imaginative, the soundest advice was that first
offered in the thread: don't do it. EJB is not a general-purpose query
engine. The standard way to implement ad hoc queries is JDBC in a
Session Bean.

Fred Loney
Spirited Software, Inc.
www.spiritedsw.com

----- Original Message -----
From: "Hu Shih" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, March 01, 2002 4:10 PM
Subject: Re: How many Finders to I need for a search enginer?


> All these "solutions" would be like a DBA telling people that they
can't
> issue a query against database, but can only do query through
pre-defined
> database views.  Sorry, but this is ridiculous.
>
> What about the query statement?  Should that be in EQL?  Does EJB
container
> know how to map EQL to target DB during runtime?  If not EQL, wouldn't
the
> application be not portable?
>
> How would findByStatement work under CMP?
>
>
> >From: Simon Zeng <[EMAIL PROTECTED]>
> >Reply-To: Simon Zeng <[EMAIL PROTECTED]>
> >To: [EMAIL PROTECTED]
> >Subject: Re: How many Finders to I need for a search enginer?
> >Date: Thu, 28 Feb 2002 12:33:18 -0500
> >
> >Nicholson,
> >
> >One way you can try if you know what the table column name is as
below
> >    Home interface
> >         public Collection findByStatement(String statment)
> >
> >    Client.
> >         //The statement would be the where clause String you
constructed
> >         String statment = " price > "+price +" and age > "+age;
> >         Collection collection = ejbHome.findByStatement(statement);
> >
> >    XML
> >         <finder>
> >         <method-signature>findByStatement(java.lang.String
> >statement<\method-signature>
> >         <where-clause>statement<\where-clause>
> >         <\finder>
> >
> >
> >Simon Zeng
> >
> >WaterCove Networks
> >285 Billerica Road
> >Chelmsford, MA 01824
> >[EMAIL PROTECTED]
> >978-608-2099
> >
> >
> >-----Original Message-----
> >From: Nicholson, Dale [mailto:[EMAIL PROTECTED]]
> >Sent: Thursday, February 28, 2002 12:02 PM
> >To: [EMAIL PROTECTED]
> >Subject: Re: How many Finders to I need for a search enginer?
> >
> >
> >I'm not sure I follow your answer Divya, what I think you are saying
is to
> >pass null parameters.  This will work as long as the item passed is
still
> >the correct type.  But if you mean to simply not pass the parameters
that
> >will cause java to look for a method that takes the new combination
of
> >parameters.
> >
> >Eric,
> >I think what you are looking for is overloaded methods.
> >
> >For instance:
> >public Collection findByAll(Float price)
> >public Collection findByAll(Float price, int age)
> >public Collection findByAll(Float price, int age, int weight)
> >public Collection findByAll(Float price, int age, int weight, String
name)
> >
> >These four methods could do a totally different search based on the
> >different criteria passed by overloading the method, you don't need
to use
> >a
> >different method name for each type of search.
> >
> >Alternately you could make one method that requires all the
parameters then
> >check to see which parameters are filled to determine your search.
This
> >would not be the preferred way because the calling application would
have
> >to
> >create a blank variable for all the search criteria even for the
things not
> >required for their search.  It would be much better to have
overloaded
> >methods for every combination of items that could be passed in.
> >
> >What I feel would be the BEST way to do what you need would be to
create a
> >class that holds your 20 attributes with setter and getter methods
for
> >each.
> >Then you create one object and fill in the attributes you want to
search
> >for
> >and only pass the object to your method:
> >
> >public Collection findByAll(ObjTestContainer search)
> >
> >This way the calling application simply creates an ObjTestContainer
object
> >and fills in the attributes they need, then passes the object to the
> >findByAll method.  Further, you could add code to the constructor
method in
> >the class to fill in the default values.
> >
> >See the end of this email for a sample class that could be used the
way I
> >suggest.
> >
> >
> >
> >Dale Nicholson
> >
> >
> > > -----Original Message-----
> > > From: Divya [mailto:[EMAIL PROTECTED]]
> > > Sent: Thursday, February 28, 2002 3:08 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: How many Finders to I need for a search enginer?
> > >
> > >
> > > A method
> > >
> > > findByAll(Float Price, int Age, int Weight,............){}.
> > >
> > > If the any parameter is NULL ( or not specifies by User ) ,
> > > then assign the
> > > default value for that parameter like * in DB2 and % in Oracle.
> > >
> > > Eg:  select * from ABC where Price like '*' and ............
> > >
> > > Best Regards,
> > > Divya.
> > >
> > >
> > >
> > >
> > > > Hi,
> > > >  I have an app that is going to have very intricate search
> > > capabilities.
> > > It is using CMP2.0. How would I implement finders in the
> > > system if I had for
> > > instance 20 attributes for an entity, and the search could be any
> > > combination of the 20 attributes?(ie an item has price, age,
> > > weight and i
> > > want price >$20, age <50 years, weight == 10 pounds). Would I
> > > need to create
> > > a specific finder for this ie
> > > >
> > > > public Collection findByPriceANDAgeANDWeight(Float Price,
> > > int Age, int
> > > Weight) throws RemoteException, FinderException;
> > > >
> > > > and so on for every permutation (n^2 finders!?!?!?!) This
> > > seems a bit
> > > ridiculous. Somebody please help, it almost makes me scared
> > > of using EJBs
> > > for this purpose, becuase I could more easily create a custom
> > > finder in a
> > > normal JDBC client that appends SQL contraints like WHERE
> > > Price > 20. Is
> > > there a way to do this better in EJB (maybe a dynamic
FindStatement?)
> > > similar to my JDBC client way?
> > > >
> > > > Warmest Regards,
> > > > Eric Dunn
> > > > [EMAIL PROTECTED]
> > > >
> > > >
> > > ==============================================================
> > > =============
> > > > To unsubscribe, send email to [EMAIL PROTECTED] and
> > > include in the
> > > body
> > > > of the message "signoff EJB-INTEREST".  For general help,
> > > send email to
> > > > [EMAIL PROTECTED] and include in the body of the message
"help".
> > > >
> > > >
> > >
> > > ==============================================================
> > > =============
> > > To unsubscribe, send email to [EMAIL PROTECTED] and
> > > include in the body
> > > of the message "signoff EJB-INTEREST".  For general help,
> > > send email to
> > > [EMAIL PROTECTED] and include in the body of the message
"help".
> > >
> >
> >package your.package.path.and.name;
> >import java.io.Serializable;
> >public class ObjTestContainer implements Serializable{
> >     public ObjTestContainer() {
> >     }
> >     private String field1 = "";  // these would be your 20
attributes
> >     private String field2 = "";  // this example only has 4
> >     private String field3 = "";
> >     private String field4 = "";
> >
> >     public String getField1(){
> >         return field1;
> >     }
> >     public void setField1(String field1){
> >         this.field1 = field1;
> >     }
> >     public String getField2(){
> >         return field2;
> >     }
> >     public void setField2(String field2){
> >         this.field2 = field2;
> >     }
> >     public String getField3(){
> >         return field3;
> >     }
> >     public void setField3(String field3){
> >         this.field3 = field3;
> >     }
> >     public String getField4(){
> >         return field4;
> >     }
> >     public void setField4(String field4){
> >         this.field4 = field4;
> >     }
> >}
> >
>
>=======================================================================
====
> >To unsubscribe, send email to [EMAIL PROTECTED] and include in
the body
> >of the message "signoff EJB-INTEREST".  For general help, send email
to
> >[EMAIL PROTECTED] and include in the body of the message "help".
> >
>
>=======================================================================
====
> >To unsubscribe, send email to [EMAIL PROTECTED] and include in
the body
> >of the message "signoff EJB-INTEREST".  For general help, send email
to
> >[EMAIL PROTECTED] and include in the body of the message "help".
> >
>
>
> _________________________________________________________________
> Join the world's largest e-mail service with MSN Hotmail.
> http://www.hotmail.com
>
>
========================================================================
===
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the
body
> of the message "signoff EJB-INTEREST".  For general help, send email
to
> [EMAIL PROTECTED] and include in the body of the message "help".
>

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to