Grettings !. У меня слишком много проблем со следующим вопросом ... я постараюсь быть настолько ясным, насколько возможно. В настоящее время у меня есть реализация JCR Jackrabbit, работающая в нашем веб-приложении. Все работает нормально, но возникает небольшая (большая) проблема при попытке выполнить определенный поиск.JCR, JackRabbit: создание XPath для поиска Года даты и для значений свойств подносов
Для краткого обзора того, какие данные хранятся, у нас есть 3 класс узлов, называемый «Entry», который расширяет еще один класс узлов с именем «BaseEntry» и расширяет другой, называемый «BaseNode». Класс Entry представляет собой узел в нашей системе JCR и имеет набор свойств (отображаемых как атрибуты соответствующего класса), а также наследует свойства, отображаемые в их суперклассах.
копировать и вставлять, важной частью определения класса и свойств, представляющих интерес ...
@Node(jcrType = "entry", extend = BaseEntry.class)
public class Entry extends BaseEntry {
... // nothing really important here
}
@Node(jcrType = "baseEntry", extend = BaseNode.class, isAbstract = true)
public abstract class BaseEntry extends BaseNode {
@Collection (jcrType = "attachment",
collectionConverter = NTCollectionConverterImpl.class)
protected List<Attachment> attachments = new ArrayList<Attachment>();
...
}
@Node(jcrType = "baseNode", isAbstract = true)
public abstract class BaseNode {
@Field(jcrName = "name", id = true)
protected String name;
@Field(jcrName = "creationDate")
protected Date creationDate;
...
}
1) Как я могу сделать предикат для выбрать только те узлы (записей), которые имеют специфический год в собственности creationDate игнорируя остальные. Атрибут имеет тип Date (в классе), и я думаю, что свойство хранится в формате xs: DateTime, я думаю ... я действительно не очень хорошо знаю ... как он действительно соответствует дате в базовой системе JCR ,
До сих пор я получаю на это ...
должен что-то вроде этого //element(*, entry)[getYear(@creationDate) == <year>]
должно быть целое число, строка, ... я действительно не kwow.
2) Как я могу сделать предикат для выбора только тех узлов (записей), которые содержат вложения, которые имеют имя определенного имени.
Опять класс Attachment, важная часть ...
@Node(jcrType = "attachment", discriminator = true)
public class Attachment extends BaseNode implements Comparable<Attachment> {
...
}
До сих пор я получаю на это .. это работает .. но должно быть лучше:
//element(*, entry) [jcr:contains(./*,'<nameOfInterest>')]
То, что все друзья, я действительно извиняюсь за отсутствие информации, которую может потребоваться читателю, чтобы лучше понять предысторию вопроса, я думаю, это то, что я могу сделать. Я довольно новичок в Jackrabbit и JCR, и мне нужно на них руки (грязные), не зная очень хорошо, что я делаю .. и не обращая внимания, это стало очень сложным ...
Надеюсь, что любой благотворительная душа может ответить на это и помочь, по крайней мере, немного: D. Спасибо за продвижение. Приветствия. Víctor.
Thanks Thomas !!!! Извините за задержку!. – Victor