我正在使用datastax object mapper和accessor将数据插入cassandra表中。在链接的文档中,它说返回类型规范会影响查询的执行方式。我希望查询异步执行,因此我选择使用ResultSetFuture
:
@Accessor
interface MyTableAccessor {
@Query("INSERT INOT MY_TABLE " +
"SET value = :v " +
"WHERE $ID = :id ")
fun insertValue(@Param("v") value: String, @Param("id") id: String): ResultSetFuture
}
我的插入电话是:
val id = ...
val insertFutures = myList.map {
myTableAccessor.insertValue(it, id)
}
我还为这些期货添加了回调:
insertFutures.forEach {
Futures.addCallback(it, MyCallback(stats, tags))
}
其中MyCallback
实现FutureCallback
接口。我打完电话:
return Futures.inCompletionOrder(insertFutures)
.map { it.get() }
这给我一个List<ResultSet>
。
但是我想为插入调用返回Boolean
,以指示插入操作成功。我不确定如何使用返回的List<ResultSet>
来做到这一点。
答案 0 :(得分:0)
插入查询仅在使用轻量级事务(LWT)时返回结果。在其他情况下,插入查询不会返回任何内容,并且操作成功的事实是您得到了ResultSet
而不是异常。因此,在您的情况下,只需添加始终返回true的onSuccess
回调和返回false的onFailure
即可。