[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