不是抽象的,并且不重写hbase中tablecallback中的抽象方法dointable(htableinterface)

js4nwp54  于 2021-07-15  发布在  Hbase
关注(0)|答案(2)|浏览(438)

我最近将hbase版本从1.2.2.5.3.0-37更改为2.2.3.7.1.4.0-203。有一个代码段(hbase 1.2版的旧代码)

public List<UserRole> updateUserRoles(final List<UserRole> userRole){
        return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
               public List<UserRole> doInTable(HTableInterface table) throws Throwable {
                      List<Put> inputBatch = createInputBatch(userRoles);
                      table.put(inputBatch);
                      return userRoles;
                    }
                   });
                   }

从现在起,htableinterface就被弃用了。所以我在新代码中使用了表,就像这样

public List<UserRole> updateUserRoles(final List<UserRole> userRole){
        return hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
               public List<UserRole> doInTable(Table table) throws Throwable {
                      List<Put> inputBatch = createInputBatch(userRoles);
                      table.put(inputBatch);
                      return userRoles;
                    }
                   });
                   }

但现在我遇到了这样的错误:“不是抽象的,并且不重写hbase中tablecallback中的抽象方法dointable(htableinterface)(属于以下两行:

hbaseTemplate.execute(AUTH_TABLE_NAME, new TableCallback<List<UserRole>>() {
               public List<UserRole> doInTable(Table table) throws Throwable".)

感谢您的帮助,谢谢

1l5u6lss

1l5u6lss1#

你试图重写/实现这个方法 doInTable 在班上 TableCallback . 但这在更新的api中已经不存在了。

muk1a3rh

muk1a3rh2#

似乎你正在使用一些你不应该(再)使用的东西。
不是抽象的,并且不重写hbase中tablecallback中的抽象方法dointable(htableinterface)
这意味着在您实现的接口中,有一个

public List<UserRole> doInTable(HTableInterface hTableInterface);

方法。
您所做的是,在实现中将该变量的类型从htableinterface更改为table,这不匹配,这会导致您的问题。
您正在实现的接口仍然使用另一个类,可能是您没有很好地更新所有库,或者无法使用该新版本。
因此,请检查该接口是否有另一个/更新的版本,并实现它,或者您可以考虑回滚到该旧版本。

相关问题