This is more of a design than implementation question and it\'s going to be long so bear with me. It\'s best explained with an example:
Let\'s say I have a business
Hmm - interesting question.
Having thought it over, writing you own criteria interface is probably the way to go. It won't tie you to an implementation and will lower the security concerns.
Also depending on how many objects are involved have considered returning the whole set of products (with necessary filters applied) then having the end user apply filters with lambdaj or similar. See:
http://code.google.com/p/lambdaj/