例如,如果我做类似的事情:
Criteria c = session.createCriteria(Book.class)
.add(Expression.ge("release",reDate);
.add(Expression.ge("price",price);
.addOrder( Order.asc("date") )
.setFirstResult(0)
.setMaxResults(10);
c.list();
如何使用相同的条件实例,但删除(例如)第二个条件? 我正在尝试构建一个动态查询,我想让用户在其中删除过滤器,而后端不必从头开始重建条件。
谢谢
最佳答案
据我所知,一旦创建条件查询,就无法从中删除内容(限制、排序等)。我对 Criteria API 的内部知识不够了解,但我知道公开的接口(interface)中没有任何内容。您可以尝试操纵传递给 add
的对象或 addOrder
,但这听起来像是做的工作多得不值得,尤其是当有更清洁的替代品时。
条件查询在我见过的每个应用程序中肯定是一次性使用。
现在,您可以做的是以自定义格式(例如 Collection
)存储您的限制、顺序和限制,然后从该存储格式很容易地构建您的查询。这可能对您的用户界面更有意义,因为您肯定需要从那里进行细粒度控制。
我敢肯定,这不是您正在寻找的答案,但这正是我过去所做的。
HTH
关于java - 如何从标准中删除标准?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433915/