Modeshape, запрашивающий mixinTypes
Я использую Modeshape и modehape-connector-jdbc-метаданные. Я хочу получить все узлы, представляющие таблицы в хранилище. Что узлы имеют [mj:catalog]
смешанный тип.
Я запрашиваю хранилище, используя следующий код:
public List getDatabases() throws RepositoryException {
// Obtain the query manager for the session ...
QueryManager queryManager = dbSession.getWorkspace().getQueryManager();
// Create a query object ...
Query query = queryManager.createQuery("SELECT * FROM [mj:table]"
, Query.JCR_SQL2);
// Execute the query and get the results ...
QueryResult result = query.execute();
// Iterate over the nodes in the results ...
NodeIterator nodeIter = result.getNodes();
List stringResult = new ArrayList();
while (nodeIter.hasNext()) {
stringResult.add(nodeIter.nextNode().getName());
}
return stringResult;
}
Но он всегда возвращает пустой список.
Я также попытался сделать запрос, используя следующие запросы:
SELECT unst.*, tbl.* FROM [nt:unstructured] AS unst
JOIN [mj:table] AS tbl ON ISSAMENODE(unst,tbl)
SELECT * FROM [nt:unstructured] WHERE [jcr:mixinTypes] = [mj:table]
Но результат остается прежним. Что я делаю не так?
Спасибо за любую помощь.
1 ответ
Известна проблема, заключающаяся в том, что узлы метаданных базы данных не индексируются автоматически. Простой обходной путь - наложение сессии JCR getWorkspace()
экземпляр для org.modeshape.jcr.api.Workspace
(общедоступный API для рабочего пространства ModeShape) и вызвать reindex(String path)
метод и передача пути к узлу каталога базы данных (или, при желании, предка).