我正在使用RethinkDB驱动程序来实现Java。我想过滤表endedAt
中没有字段jam
的行,如下所示:
public List<Jam> getCurrent(){
Cursor cursor = r.table("jam")
.filter(row -> row.hasFields("endedAt")).not()
.run(conn);
List<Map<String,Object>> list=cursor.toList();
return list.stream().map(item->JamRepository.toJam(item)).collect(Collectors.toList());
}
我收到此错误Expected type DATUM but found SELECTION Java
我在另一个类中有另一个过滤函数:
public List<Speedlog> getByTime(long time){
Cursor cursor = r.table("speedlog")
.filter(row -> row.g("createdAt").eq(time))
.run(conn);
List<Map<String,Object>> list=cursor.toList();
return list.stream().map(item->SpeedlogRepository.toSpeedlog(item)).collect(Collectors.toList());
}
此功能正常运行
有人可以解释一下这两者之间的区别吗?为什么getCurrent
函数会出错?它的含义是什么以及如何解决?谢谢
答案 0 :(得分:1)
not()
应该在row.hasFields("endedAt")
之后。目前,您正尝试在not()
函数的结果上调用filter
。所以,正确的代码:
public List<Jam> getCurrent(){
Cursor cursor = r.table("jam")
.filter(row -> row.hasFields("endedAt").not())
.run(conn);
List<Map<String,Object>> list=cursor.toList();
return list.stream().map(item->JamRepository.toJam(item)).collect(Collectors.toList());
}