将查询的参数发送到sql存储过程,查询并重新获取结果。
或
根据某些标准,获取所有数据的列表,并创建一些功能,以便返回实体列表中的最终反向过滤列表。
类似的东西:
//on managed bean
...
List<Person> listPersons = personFacade.findAll();
return filterByName(filterByAge(filterBySomething(listPersons )));
对于我来说,通过第二种选择更容易实现,但我不确定这是否是最好的方法。
答案 0 :(得分:1)
通常,您使用Java持久性查询语言定义“过滤器”并让JPA容器执行其工作...
http://docs.oracle.com/javaee/6/tutorial/doc/bnbtg.html
JPQL转换为SQL,因此数据库正在开展工作,只有过滤后的实体bean才会返回到应用程序的EJB层。
相反,如果稍后过滤它们,则必须首先将整个数据库表加载到内存中。因此,将为每条记录创建一个实体bean,但不久之后就会将其丢弃,因为它已从您的列表中过滤掉。