如何解决不是抽象的,也不会覆盖 hbase
我最近将我的 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 。所以我在新代码中使用了 Table,就像这样
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".)
感谢任何帮助。提前致谢
解决方法
您尝试覆盖/实现类 doInTable
中的方法 TableCallback
。但这在更新的 API 中(不再)存在。
看来您正在使用不应该使用的东西(不再使用)。
不是抽象的,也不会覆盖抽象方法 hbase 中 TableCallback 中的 doInTable(HTableInterface)
这意味着在你实现的接口中,有一个
public List<UserRole> doInTable(HTableInterface hTableInterface);
方法。
您所做的是在实现中将该变量的类型从 HTableInterface 更改为 Table,这不匹配,这导致了您的问题。
您正在实现的接口仍然使用那个其他类,可能是您没有很好地更新所有库,或者它无法使用该新版本。
因此,请检查该接口是否有另一个/较新版本,并改为实施该版本,或者您可能会考虑回滚到该旧版本。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。