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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user