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) метод и передача пути к узлу каталога базы данных (или, при желании, предка).

Другие вопросы по тегам