我正在编写一个简单的独立Java类,它使用Lotus Domino的NCSO JAR远程连接到Domino服务器。
我正在建立会话,访问数据库,然后访问视图:
Session session = NotesFactory.createSession("host", "user", "password");
Database db = session.getDatabase(null, "MyDB.nsf");
View view = db.getView("MyView");
现在,我在视图中打印条目数:
int count = view.getEntryCount();
我得到一个非零数字(比方说1500)。
但是,我似乎无法按键加载任何文档。例如,对于字母表中的任何letter
,我将通过此调用获得一个空文档集合:
System.err.println(view.getAllDocumentsByKey(letter, false));
当我尝试按键加载文档时,当我知道视图中存在该键时,我得到null
。
Document document = view.getDocumentByKey("DocKey"); // Equals null even though
// I know that 'DocKey' is
// the key of an existing
// document within the view.
当使用本地Notes调用(使用Notes.jar
)时,据说相同的代码正在工作(虽然我没有检查)。
我错过了什么?
修改
我刚注意到session.getNotesVersion()
返回版本8.5.2。我当前使用的NCSO.jar
文件似乎没有一些随Notes 8添加的方法。因此,我使用的NCSO.jar
文件可能属于早期版本Notes比我试图与之沟通的那个。这可能是原因吗?
答案 0 :(得分:2)
如果相同的代码在本地工作,那么应排除视图的第一列未排序的可能性。假设,那么最可能的问题是文档受ReaderNames字段保护,并且您用于验证会话的标识无权访问文档。
答案 1 :(得分:0)
假设我理解你是对的,你想获得视图的第一个(查找)列包含以特定字母开头的任何内容的所有文档吗? 例如。你发送“A”到veiw.getAllDocumentsByKey()并期望一个包含“Apple”,“Alpha”,“Amoeba”和“Apricot”的集合被退回?
我会修改视图中的列只保留第一个字母: @Left(MyField的; 1) 然后,很容易执行查找,看看你是否得到了正确的结果。