无法通过Java从数据库检索记录

时间:2019-07-15 17:27:02

标签: java lotus-notes lotus-domino

我正在尝试通过Java获取Lotus-Domino nsf数据库中的行。我确实设法成功获得了列名和列数,因为它们与ibm notes客户机上显示的相同。但是,每当我通过ViewEntryCollection收到view.getAllEntries()时,它似乎都是空的。

我尝试了几种不同的选择,包括反射。

for (Object object : database.getViews()) {
    View view = (View) object;
    if (view.getName().equals("For Printing\\By Date")) {

        // this prints out "view.getEntryCount() = 1145"
        System.out.println("view.getEntryCount() = " + view.getEntryCount());

        // this prints out "view.getAllEntries().getFirstEntry() = null"
        System.out.println("view.getAllEntries().getFirstEntry() = " + 
                        view.getAllEntries().getFirstEntry());

        break;
    }
}

我希望定义第一个条目,因为它说它的条目数是1145,但它是null。这是权限问题吗?

2 个答案:

答案 0 :(得分:3)

是的,这可能是权限问题,很可能是。 getEntryCount不会检查您对基础条目的访问。它只是返回索引器计数的条目数。

但是,如果代码运行的身份(您的用户ID,或者代码签名者,如果它是代理)对视图中的任何文档都不具有读取权限(由于使用了文档中的ReaderName字段,最有可能),则getFirstEntry()将返回null。您需要确保代码在具有适当访问级别的用户的身份下运行。

答案 1 :(得分:1)

我认为输出中没有错。 view.getEntryCount()给出了实际计数,其中view.getAllEntries().getFirstEntry()表示第一个条目为空。这并不意味着那里没有条目,而是说第一个条目中的对象引用指向空。