2014-07-14 5 views
0

В классе Java в приложении XPages я пытаюсь получить дескриптор документа Notes в представлении Notes. В Notes View содержится несколько документов Notes. Чтобы получить документ Notes, который я хочу, я использую 2 ключа. Это приводит к ошибке. Если я использую только один ключ, возвращается первый документ Notes в представлении Notes. Вид Notes содержит два отсортированных столбца. Первый столбец содержит значение empLang, второй столбец содержит значение templateType. Вот мой код:XPages - Lotus Domino Java - getDocumentByKey

String empLang = "en"; 
    String templateType = "C"; 
    Database dbCurr = session.getCurrentDatabase(); 
    String viewName = "vieAdminTemplates" + empLang; 
    View tview = dbCurr.getView(viewName); 
    Vector viewKey = new Vector(); 
    viewKey.addElement(empLang); 
    viewKey.addElement(templateType); // this line causes the code to fail 
    Document templateDoc = tview.getDocumentByKey(viewKey); 

В чем может быть причина этой проблемы?

+0

Оффлайн, я думаю, что .getDocumentByKey работает только в первом отсортированном столбце. Вместо этого вы можете использовать Database.Search. –

+1

getDocumentByKey и т. Д. В Java работают с несколькими столбцами, см. Http://www.intec.co.uk/apparent-java-getalldocumentsbykey-getallentriesbykey-bug/ –

+1

Ваш пример выше работает идеально для меня. Является ли ваш импорт для Vector 'import java.util.Vector;' тоже? –

ответ

0

Мне очень жаль. Проблема здесь в том, что имя представления в коде неверно. Существует вид «vieAdminTemplates», но у него нет второго столбца, содержащего значение «C». При правильном просмотре код работает нормально. Спасибо, что нашли время ответить на мой вопрос.

1

Пара идей

1) Вы можете сцепить ключ в одну колонку, так как вы сказали, что работали. Что-то вроде 'en ~ C'

2) Вы можете использовать метод database.search, где вы включаете строку языка формул, которая изолирует нужный документ. Он возвращает коллекцию, а затем вы извлекаете документ оттуда.

1

getDocumentByKey работает с несколькими столбцами. Есть известная проблема с двойниками, но вы не нажимаете на нее. Одна вещь, которая выделяется, - вторая колонка, это всего лишь одна буква. Это можно рассматривать как Char вместо строки, либо когда вы добавляете элемент или по представлению.

Я бы рекомендовал отладить, какой тип данных они есть. viewKey.get (1) .getClass(). getName() Я думаю, дает вам класс, который он хранит как. Выполнение этого же для значения View Column.

Когда вы говорите, что это приводит к сбою кода, как это происходит? Он просто ничего не возвращает и не выдает ошибку?

Следующим шагом будет попытка проверить его, где вид и вектор содержат более одного символа, например. «CC», чтобы проверить, есть ли основная проблема с Java getDocumentByKey и одиночными символами.

Смежные вопросы