想知道如何在 Vaadin 中设置过滤器 "TableQuery"
Wondering how to set filters in Vaadin's "TableQuery"
我已经在 Vaadin 中创建了一个数据库连接。在构建 JDBCConnectionPool 之后,我创建了一个 TableQuery,如下所示:
TableQuery tq = new TableQuery("STRING", pool, new OracleGenerator());
但是,这非常成功,因为我能够获得适当的实体(查询 returns 整个 table)。
问题是我想过滤这个查询。我对有关此主题的文档感到非常失望。 TableQuery.setFilters() 方法的 javadoc 指出,我们需要一个包含过滤器的列表。
我目前的方法:
List<Filter> filter = new ArrayList<Filter>();
filter.add(new Equal("SURNAME", "SMITH"));
tq.setFilters(filter);
这什么都不做。它甚至不会引发异常。代码就像没有上面提到的块一样工作。
有人有意见吗?
抱歉,这很简单。我只是弄错了这个概念。你必须过滤容器。
像这样:
// tq is the TableQuery (see code snippet provided in the question)
SQLContainer container = new SQLContainer(tq);
container.addContainerFilter(new Equal("SURNAME", "SMITH"));
可能会帮助别人避免这种情况 "trap" ;P
我已经在 Vaadin 中创建了一个数据库连接。在构建 JDBCConnectionPool 之后,我创建了一个 TableQuery,如下所示:
TableQuery tq = new TableQuery("STRING", pool, new OracleGenerator());
但是,这非常成功,因为我能够获得适当的实体(查询 returns 整个 table)。
问题是我想过滤这个查询。我对有关此主题的文档感到非常失望。 TableQuery.setFilters() 方法的 javadoc 指出,我们需要一个包含过滤器的列表。
我目前的方法:
List<Filter> filter = new ArrayList<Filter>();
filter.add(new Equal("SURNAME", "SMITH"));
tq.setFilters(filter);
这什么都不做。它甚至不会引发异常。代码就像没有上面提到的块一样工作。
有人有意见吗?
抱歉,这很简单。我只是弄错了这个概念。你必须过滤容器。
像这样:
// tq is the TableQuery (see code snippet provided in the question)
SQLContainer container = new SQLContainer(tq);
container.addContainerFilter(new Equal("SURNAME", "SMITH"));
可能会帮助别人避免这种情况 "trap" ;P