想知道如何在 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