分享

SingleColumnValueFilter过滤器时灵时不灵

写了一个java的测试程序,hbase数据库,
库表结构很简单,表名mymessage,列族cf,列 name,sex,address
页面及数据 QQ截图20160921172729.png
页面查询条件四个列全部写SingleColumnValueFilter,java代码示例 name,sex,address
                        if (m2.getName() != null && !m2.getName().equals("")) {
                                filter2 = new SingleColumnValueFilter(Bytes.toBytes("cf"),
                                                Bytes.toBytes("姓名"), CompareOp.EQUAL,
                                                new SubstringComparator(m2.getName()));
                                filterList.addFilter(filter2);
                        }
                        if (m2.getSex() != null && !m2.getSex().equals("")) {
                                filter3 = new SingleColumnValueFilter(Bytes.toBytes("cf"),
                                                Bytes.toBytes("性别"), CompareOp.EQUAL,
                                                new SubstringComparator(m2.getSex()));
                                filterList.addFilter(filter3);
                        }
                        if (m2.getAddress() != null && !m2.getAddress().equals("")) {
                                filter4 = new SingleColumnValueFilter(Bytes.toBytes("cf"),
                                                Bytes.toBytes("住址"), CompareOp.EQUAL,
                                                new SubstringComparator(m2.getAddress()));
                                filterList.addFilter(filter4);
                        }
现在出了一个问题,页面输入查询条件,姓名与地址输入数据,数据会过滤后显示,但是性别输入以后,数据总是全部显示出来;
然后我换了一个表,test,列族cf,字段aa,bb,cc,对应还是 姓名 性别 住址
这时候页面输入查询条件,发现 aa,bb字段也就是姓名性别过滤是起作用的,cc字段,也就是住址字段这次过滤条件不起作用了,
这个问题搞了一下午,头都大了三圈,求求那位大神解答一下啊

已有(4)人评论

跳转到指定楼层
nextuser 发表于 2016-9-21 18:26:51
调试下,性别采用的是什么方式输入,是下拉,还是文本框。改成与其它字段一样的输入方式。猜测是获取值的问题
回复

使用道具 举报

jyz123456 发表于 2016-9-21 18:37:40
全部采用的文本框输入,查看了一次,生成的filter的格式都完全一样
回复

使用道具 举报

nextuser 发表于 2016-9-21 19:10:19
jyz123456 发表于 2016-9-21 18:37
全部采用的文本框输入,查看了一次,生成的filter的格式都完全一样

rowkey是怎么设计的
回复

使用道具 举报

einhep 发表于 2016-9-22 08:14:36
  filterList.addFilter(filter4);
把filterList的内容和filter4内容都输出出来。看看什么情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条