我正在尝试通过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
。这是权限问题吗?
答案 0 :(得分:3)
是的,这可能是权限问题,很可能是。 getEntryCount不会检查您对基础条目的访问。它只是返回索引器计数的条目数。
但是,如果代码运行的身份(您的用户ID,或者代码签名者,如果它是代理)对视图中的任何文档都不具有读取权限(由于使用了文档中的ReaderName字段,最有可能),则getFirstEntry()将返回null。您需要确保代码在具有适当访问级别的用户的身份下运行。
答案 1 :(得分:1)
我认为输出中没有错。 view.getEntryCount()
给出了实际计数,其中view.getAllEntries().getFirstEntry()
表示第一个条目为空。这并不意味着那里没有条目,而是说第一个条目中的对象引用指向空。