我正在尝试通过Java获取Lotus-Domino nsf数据库中的行。我确实成功地获得了列名和列数,因为它们与我的ibm notes客户端上显示的相同。然而,每当我通过view.getAllEntries()获取ViewEntryCollection时,它似乎是空的。
我尝试了几种不同的选项,包括反射。
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。这是权限问题吗?
发布于 2019-07-16 08:32:18
是的,这可能是一个权限问题,而且很可能是。getEntryCount不会检查您对基础条目的访问权限。它只返回索引器计算的条目数。
但是,如果运行代码的身份(您的用户id,如果是代理,则是代码签名者)对视图中的任何文档都没有读取权限(很可能是因为在文档中使用了ReaderName字段),那么getFirstEntry()将返回null。您需要确保代码在具有适当访问级别的用户的标识下运行。
发布于 2019-07-16 02:07:00
我认为输出中没有任何错误。view.getEntryCount()给出的是实际计数,而view.getAllEntries().getFirstEntry()表示第一个条目为空。这并不意味着那里没有条目,而是说第一个条目中的对象引用指向null。
https://stackoverflow.com/questions/57044557
复制相似问题