【发布时间】:2014-09-12 20:31:22
【问题描述】:
我正在使用com.vaadin.data.util.sqlcontainer.query.TableQuery 使用 MYSQL 表中的数据填充 UI 视图。
我只想显示特定字段为空的行,所以原始 SQL 是:
SELECT * FROM products WHERE monthsLeft IS null;
引用Vaadin docs,我正在使用 Vaadin SQLContainer 对象将此条件设置为
sqlContainer.addContainerFilter(new Compare.Equal("monthsLeft ", null));
但这会引发以下错误:
Sep 11, 2014 5:10:13 PM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.IllegalArgumentException: You cannot add null parameters using addParamaters(Object). Use addParameters(Object,Class) instead
at com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper.addParameterValue(StatementHelper.java:63)
at com.vaadin.data.util.sqlcontainer.query.generator.filter.CompareTranslator.getWhereStringForFilter(CompareTranslator.java:32)
at com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder.getWhereStringForFilter(QueryBuilder.java:82)
at com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder.getJoinedFilterString(QueryBuilder.java:92)
at com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder.getWhereStringForFilters(QueryBuilder.java:107)
at com.vaadin.data.util.sqlcontainer.query.generator.DefaultSQLGenerator.generateSelectQuery(DefaultSQLGenerator.java:107)
at com.vaadin.data.util.sqlcontainer.query.TableQuery.getCount(TableQuery.java:200)
at com.vaadin.data.util.sqlcontainer.SQLContainer.updateCount(SQLContainer.java:1142)
at com.vaadin.data.util.sqlcontainer.SQLContainer.size(SQLContainer.java:398)
at com.vaadin.ui.AbstractSelect.size(AbstractSelect.java:762)
at com.vaadin.ui.Table.refreshRenderedCells(Table.java:1628)
at com.vaadin.ui.Table.getVisibleCells(Table.java:3921)
at com.vaadin.ui.Table.beforeClientResponse(Table.java:3155)
at com.vaadin.server.communication.UidlWriter.write(UidlWriter.java:96)
at com.vaadin.server.communication.UidlRequestHandler.writeUidl(UidlRequestHandler.java:149)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:97)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1329)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:503)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
我希望有一个Compare.IsNull,但我没有看到一个
【问题讨论】: