Java RethinkDB预期类型为DATUM,但找到了SELECTION

时间:2016-10-23 19:00:15

标签: java types rethinkdb nosql

我正在使用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函数会出错?它的含义是什么以及如何解决?谢谢

1 个答案:

答案 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());
}