Re: Persistent.find() behavior

"Shash Chatterjee" <[email protected]>
Newsgroups gmane.comp.java.keel.user
Message-ID <[email protected]>
For occa.appeal, in the bean definition, I am guessing you defined

private int id = 0;

try

private int id = null;
and same for the other fields.

If this works, you are writing the Persistent section in the manual, right?

> myPersistent has an id field, defined as primary key, two other 
> fields, number and year, defined as int and allow nulls, and some 
> other assorted fields.
> 
> the following code snippet:
> 
> PersistentFactory pf =
>             (PersistentFactory) request.getService(
>                 PersistentFactory.ROLE,
>                 myDB); //request.getDomain()
> 
>         try {
>             // This is the actual persistent, see the Appeal entity
>             Persistent m = pf.create("occa.appeal");
>             String genemsg = "";
>             
>             
>             // Set the fields we are interested in
>             if (
> SuperString.notNull(request.getParameterAsString("Year")).equals(""))
>  {            	genemsg = genemsg.concat("tried with just id\n");
>             	m.setField("id", request.getParameter("Number"));       
>      } else {
>             	m.setField("number", request.getParameter("Number"));
>             	m.setField("year", request.getParameter("Year"));       
>      }
>             
>             if( m.find() ){
>             	res.addOutput("found", genemsg.concat("WOOHOO! YOU DA
> MAN!!!\nNumber = " + m.getFieldString("number")));
>             }else{
>             	res.addOutput("found", genemsg.concat("YIKES! =0("));
>             }
> // end snippet
> 
> returns YIKES! =0( (meaning false on the find())
> 
> and i get this in the svc-persist-default log (same thing if i try with
> hibernate actually):
> DEBUG   2004-04-16 14:53:41.041   [persist-default]
> 
>
(/org.keel.services.persist.defaultpersist.DefaultPersistent.retrieve(DefaultPersistent.java:961)):
Executing: SELECT id, number, year, [OTHER FIELDS HERE] FROM appeal WHERE id =
10000 AND number = 0 AND year = 0
> 
> OR
> 
> DEBUG   2004-04-16 14:53:41.041   [persist-default]
> 
>
(/org.keel.services.persist.defaultpersist.DefaultPersistent.retrieve(DefaultPersistent.java:961)):
Executing: SELECT id, number, year, [OTHER FIELDS HERE] FROM appeal WHERE id =
0 AND number = 100 AND year = 2003
> 
> depending on which way I try to lookup the object. Please notice it 
> is attempting to set a value for all three fields, regardless.  The javadoc
> says that find() trys to lookup based on "current" fields.  This is
> where I think I'm getting things wrong.
> 
> Is this code snippet above not the proper way to look up a 
> persistent? I've defined them as javabean style POJOs.
> 
> if I just set the id of the persistent, and use the following code:
> 	 m.retrieve();
>             res.addOutput("found", m.toString());
> 
> i get the object as expected, so I know the db comm is working ok.
> 
> Any help appreciated,
> gene
> 
> _______________________________________________
> User mailing list
> [email protected]
> http://lists.keelframework.org/listinfo.cgi/user-keelframework.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.