SqlContainer过滤区分大小写的Vaadin

时间:2013-04-21 02:34:09

标签: mysql macos vaadin case-sensitive case-insensitive

我是Vaadin的新手并且一直在尝试使用SqlContainer。我设法让mysql数据库连接正常工作。这是连接和容器代码:

import java.io.Serializable;
import java.sql.SQLException;

import com.vaadin.data.util.sqlcontainer.SQLContainer;
import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
import com.vaadin.data.util.sqlcontainer.connection.SimpleJDBCConnectionPool;
import com.vaadin.data.util.sqlcontainer.query.TableQuery;
import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
import com.vaadin.data.util.sqlcontainer.query.generator.filter.StringDecorator;

public class DatabaseHelper implements Serializable {
    private JDBCConnectionPool connectionPool = null;
    private SQLContainer credentialContainer= null;

    public DatabaseHelper() {
        initConnectionPool();
    }

    private void initConnectionPool() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connectionPool = new SimpleJDBCConnectionPool(
                    "com.mysql.jdbc.Driver",
                    "jdbc:mysql://localhost:3306/vaadin", "root", "mysqlpass",
                    2, 10);
            initContainers();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    private void initContainers() {
        try {
            /* TableQuery and SQLContainer for personaddress -table */
            QueryBuilder.setStringDecorator(new StringDecorator("`","`"));
            TableQuery q1 = new TableQuery("credentials", connectionPool);
            q1.setVersionColumn("version");
            credentialContainer= new SQLContainer(q1);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public SQLContainer getcredentialContainer(){
        return credentialContainer;
    }

}

然后我在容器上使用了过滤器:

credentialcontainer.removeAllContainerFilters();
credentialcontainer.addContainerFilter("username", username.getValue(), false, true);

然而,问题是我注意到即使我将ignoreCase参数设置为false,过滤器也会忽略大小写。

任何人都知道这是一个错误还是我做错了什么? 注意:我正在使用OS X并运行本地MYSQL服务器。

1 个答案:

答案 0 :(得分:0)

现在已经解决了!问题不在于Vaadin SqlContainer。我没有意识到由于MYSQL上的默认整理,比较不区分大小写。