java - 如何从标准中删除标准?

标签 java hibernate orm hibernate-criteria

例如,如果我做类似的事情:

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/

相关文章:

java - 理解Java中null和 '\u000'的区别

sql-server - 在 Lift 上下文中使用 ScalaQuery 的好例子?

java - 在客户端和服务器端使用相同的私钥进行 SSL 连接

java - 关于 Java GUI 组件布局策略的建议

java - 在 Hibernate 中获取当前月份的条件

mysql - Django ORM 中的别名

php - Symfony2 和 Propel 包 : add additional filter to the Propel param converter

java - 为什么在服务器启动时正确注入(inject)的 spring bean 在我将表单发布到 Controller 时为空?

java - 哪个 eclipse 适合 Java SE、Java EE 和 Hibernate?

java - Spring Framework 4.0 示例应用程序