0
Vaadin을 처음 사용하고 SqlContainer를 사용하려고했습니다. MySQL 데이터베이스 연결 작업을 관리했습니다. 같은 용기에SqlContainer 필터 대/소문자 구분 Vaadin
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 서버를 실행 중입니다.
이제 해결되었습니다. Vaadin SqlContainer에서 문제가 발생하지 않았습니다. MYSQL의 기본 콜레이트 때문에 비교가 대소 문자를 구별하지 않는다는 것을 알지 못했습니다. – Thinker