[jboss-user] [JBoss Seam] - Queries with optional arguments

EricJava do-not-reply at jboss.com
Mon Nov 5 00:38:06 EST 2007


I've got a Seam application, and now I'm writing the search page.  It has advanced search options.  For example, there is a drop-down where the user can select the customer, so it will only find records for that customer.  If the drop-down isn't used, it will find records from any customer.

An obvious way to do this is logic like:

if(selectedCustomer != null) 
  |   queryString += "and invoice.customer = :customer ";
  |        // note the space at the end 

followed by:

if(selectedCustomer != null)
  |   query.setParameter("customer", selectedCustomer);

This is clunky, run-time debugged, error-prone.  Leave off a space at the end, and it's a bug that might not show up until just the right parameters are set.  This looks like the old days of hand-assembled SQL mess.

In Hibernate, there was an object-oriented query construction system, called Criteria queries, where you can add terms to the query by creating objects (sub-classes of Criteria).  That would be a natural way to do this type of advanced search thing, but I'm not seeing an EJB way to do it.

Does my question make sense?  And is there a good solution, other than the obvious one of having if statements for both putting together the query string, and then a second time for adding params?

(As an aside, it seems like Hibernate had a lot of nice features that didn't make it into EJB 3.  I realize that Hibernate is the underpinning of JBoss EJB3, but it's a shame some of these features didn't make it.)


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4101663#4101663

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4101663



More information about the jboss-user mailing list