org.modeshape.jcr.api.query.Query类的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(17.1k)|赞(0)|评价(0)|浏览(138)

本文整理了Java中org.modeshape.jcr.api.query.Query类的一些代码示例,展示了Query类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query类的具体详情如下:
包路径:org.modeshape.jcr.api.query.Query
类名称:Query

Query介绍

[英]A specialization of the standard JCR javax.jcr.query.Query interface that adds the ModeShape-specific constant for the #FULL_TEXT_SEARCH query language.
[中]标准JCR javax的专门化。jcr。查询为#全文_TEXT_搜索查询语言添加特定于ModeShape的常量的查询接口。

代码示例

代码示例来源:origin: com.thinkbiganalytics.kylo/kylo-metadata-modeshape

public static String explainPlain(Session session, String queryExpression) throws RepositoryException {
  Query query = session.getWorkspace().getQueryManager().createQuery(queryExpression, "JCR-SQL2");
  org.modeshape.jcr.api.query.Query msQuery = (org.modeshape.jcr.api.query.Query)query;
  // Get the query plan without executing it ...
  org.modeshape.jcr.api.query.QueryResult result = msQuery.explain();
  String plan = result.getPlan();
  return plan;
}

代码示例来源:origin: ModeShape/modeshape

@Override
  public void run() {
    JcrSession session = null;
    try {
      session = repository().login();
      Query query = jcrSql2Query(session, "SELECT * FROM [mix:title]");
      startLatch.await();
      for (int i = 0; i != numQueriesEachThread; ++i) {
        // Compute a query plan that should use this index, UNLESS the index is currently undergoing rebuilding...
        validateQuery()./*rowCount(2L).useIndex("titleNodes")*/validate(query, query.execute());
      }
    } catch (Exception e) {
      e.printStackTrace();
      fail(e.getMessage());
    } finally {
      printMessage("Completing thread");
      if (session != null) session.logout();
      stopLatch.countDown();
    }
  }
};

代码示例来源:origin: ModeShape/modeshape

@FixFor( "MODE-2312" )
@Test
public void shouldUseImplicitPathIndex() throws Exception {
  Node root = session().getRootNode();
  Node newNode1 = root.addNode("nodeA");
  newNode1.setProperty("foo", "X");
  newNode1.addMixin("mix:referenceable");
  Node newNode2 = root.addNode("nodeB");
  newNode2.setProperty("foo", "Y");
  session().save();
  // print = true;
  // Compute a query plan that should use this index ...
  final String pathValue = newNode1.getPath();
  Query query = jcrSql2Query("SELECT [jcr:path] FROM [nt:unstructured] WHERE [jcr:path] = '" + pathValue + "'");
  validateQuery().rowCount(1L).useIndex(IndexPlanners.NODE_BY_PATH_INDEX_NAME).validate(query, query.execute());
  query = jcrSql2Query("SELECT A.* FROM [nt:unstructured] AS A WHERE A.[jcr:path] = $pathValue");
  query.bindValue("pathValue", valueFactory().createValue(pathValue));
  validateQuery().rowCount(1L).useIndex(IndexPlanners.NODE_BY_PATH_INDEX_NAME).validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

bindExtraVariables(uriInfo, session.getValueFactory(), query);
org.modeshape.jcr.api.query.QueryResult result = query.explain();
String plan = result.getPlan();
return new RestQueryPlanResult(plan, statement, language, query.getAbstractQueryModelRepresentation());

代码示例来源:origin: ModeShape/modeshape

@Test
@FixFor( "MODE-2515" )
public void shouldSupportQueryLimitWithMoreThan100Nodes() throws Exception {
  registerValueIndex("title", "mix:title", null, "*", "jcr:title", PropertyType.STRING);
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  int nodeCount = 102;
  for (int i = 0; i < nodeCount; i++) {
    Node book = root.addNode("book_" + (i+1));
    book.addMixin("mix:title");
    book.setProperty("jcr:title", "Title");
  }
  session.save();
  // Compute a query plan that should use this index ...
  Query query = jcrSql2Query("SELECT * FROM [mix:title] as book where book.[jcr:title] = 'Title'");
  int limit = nodeCount - 1;
  query.setLimit(limit);
  validateQuery().rowCount(limit).useIndex("title").validate(query, query.execute());
  limit = nodeCount / 2;
  query.setLimit(limit);
  validateQuery().rowCount(limit).useIndex("title").validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

@Test
public void shouldUseSingleColumnStringIndexForQueryWithNoCriteriaOtherThanMixinViaFromClause() throws Exception {
  registerValueIndex("titleNodes", "mix:title", null, "*", "jcr:mixinTypes", PropertyType.NAME);
  // print = true;
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  Node book1 = root.addNode("myFirstBook");
  book1.addMixin("mix:title");
  book1.setProperty("jcr:title", "The Title");
  Node book2 = root.addNode("mySecondBook");
  book2.addMixin("mix:title");
  book2.setProperty("jcr:title", "A Different Title");
  // Create a node that is not a 'mix:title' and therefore won't be included in the SELECT clauses ...
  Node other = root.addNode("somethingElse");
  other.setProperty("propA", "a value for property A");
  other.setProperty("jcr:title", "The Title");
  session.save();
  // Compute a query plan that should use this index ...
  Query query = jcrSql2Query("SELECT * FROM [mix:title]");
  validateQuery().rowCount(2L).useIndex("titleNodes").validate(query, query.execute());
}

代码示例来源:origin: com.thinkbiganalytics.kylo/kylo-metadata-modeshape

public List<T> findWithExplainPlan(String queryExpression) {
  try {
    org.modeshape.jcr.api.query.Query query = (org.modeshape.jcr.api.query.Query) getSession().getWorkspace().getQueryManager().createQuery(queryExpression, "JCR-SQL2");
    org.modeshape.jcr.api.query.QueryResult result = query.explain();
    String plan = result.getPlan();
    log.info(plan);
    return find(queryExpression);
  } catch (RepositoryException e) {
    throw new MetadataRepositoryException("Failure while finding entity ", e);
  }
}

代码示例来源:origin: ModeShape/modeshape

@FixFor( "MODE-2312" )
@Test
public void shouldUseImplicitIdIndex() throws Exception {
  Node root = session().getRootNode();
  Node newNode1 = root.addNode("nodeA");
  newNode1.setProperty("foo", "X");
  newNode1.addMixin("mix:referenceable");
  Node newNode2 = root.addNode("nodeB");
  newNode2.setProperty("foo", "Y");
  session().save();
  // print = true;
  // Compute a query plan that should use this index ...
  final String uuid = newNode1.getIdentifier();
  Query query = jcrSql2Query("SELECT [jcr:path] FROM [nt:unstructured] WHERE [jcr:uuid] = '" + uuid + "'");
  validateQuery().rowCount(1L).useIndex(IndexPlanners.NODE_BY_ID_INDEX_NAME).validate(query, query.execute());
  query = jcrSql2Query("SELECT A.* FROM [nt:unstructured] AS A WHERE A.[jcr:uuid] = $uuidValue");
  query.bindValue("uuidValue", valueFactory().createValue(uuid));
  validateQuery().rowCount(1L).useIndex(IndexPlanners.NODE_BY_ID_INDEX_NAME).validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

@Test
public void shouldUseSingleColumnStringIndexForQueryWithNoCriteriaOtherThanPrimaryTypeViaFromClause() throws Exception {
  registerValueIndex("unstructuredNodes", "nt:unstructured", null, "*", "jcr:primaryType", PropertyType.NAME);
  // print = true;
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  Node book1 = root.addNode("myFirstBook");
  book1.addMixin("mix:title");
  book1.setProperty("jcr:title", "The Title");
  Node book2 = root.addNode("mySecondBook");
  book2.addMixin("mix:title");
  book2.setProperty("jcr:title", "A Different Title");
  // Create a node that is not a 'mix:title' and therefore won't be included in the SELECT clauses ...
  Node other = root.addNode("somethingElse");
  other.setProperty("propA", "a value for property A");
  other.setProperty("jcr:title", "The Title");
  session.save();
  // Compute a query plan that should use this index ...
  Query query = jcrSql2Query("SELECT * FROM [nt:unstructured]");
  validateQuery().rowCount(3L).useIndex("unstructuredNodes").validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

@Override
public String explain( String query,
            String language ) throws RepositoryException {
  logger.trace("Explaining query: {0}", query);
  // Create the query ...
  final org.modeshape.jcr.api.query.Query jcrQuery = (org.modeshape.jcr.api.query.Query)getLocalSession().getSession().getWorkspace().getQueryManager().createQuery(query,
                                                                                   language);
  return jcrQuery.explain().getPlan();
}

代码示例来源:origin: ModeShape/modeshape

query.bindValue("author", session.getValueFactory().createValue("author1"));
validateQuery()
    .useNoIndexes()
    .rowCount(1)
    .hasNodesAtPaths("/book1")
    .validate(query, query.execute());
query.bindValue("author", session.getValueFactory().createValue("author2"));
final List<String> expectedPaths = new ArrayList<>(Arrays.asList("/book1", "/book2"));
validateQuery()
    .validate(query, query.execute());
assertTrue("Not all paths found: " + expectedPaths, expectedPaths.isEmpty());

代码示例来源:origin: ModeShape/modeshape

@Test
public void shouldNotUseSingleColumnStringIndexInQueryAgainstSuperType() throws Exception {
  registerValueIndex("descriptionIndex", "mix:title", "Index for the 'jcr:title' property on mix:title", "*", "jcr:title",
            PropertyType.STRING);
  // print = true;
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  Node book1 = root.addNode("myFirstBook");
  book1.addMixin("mix:title");
  book1.setProperty("jcr:title", "The Title");
  Node book2 = root.addNode("mySecondBook");
  book2.addMixin("mix:title");
  book2.setProperty("jcr:title", "A Different Title");
  // Create a node that is not a 'mix:title' and therefore won't be included in the query ...
  Node other = root.addNode("somethingElse");
  other.setProperty("propA", "a value for property A");
  other.setProperty("jcr:title", "The Title");
  session.save();
  // Compute a query plan that will NOT use this index, since the selector doesn't match the index's node type.
  // If we would use this index, the index doesn't know about non-mix:title nodes like the 'other' node ...
  Query query = jcrSql2Query("SELECT * FROM [nt:base] WHERE [jcr:title] = 'The Title'");
  validateQuery().rowCount(2L).validate(query, query.execute());
  // Compute a query plan that will NOT use this index, since the selector doesn't match the index's node type.
  // If we would use this index, the index doesn't know about non-mix:title nodes like the 'other' node ...
  query = jcrSql2Query("SELECT * FROM [nt:base] WHERE [jcr:title] LIKE '% Title'");
  validateQuery().rowCount(3L).validate(query, query.execute());
}

代码示例来源:origin: org.modeshape/modeshape-jdbc-local

@Override
public String explain( String query,
            String language ) throws RepositoryException {
  logger.trace("Explaining query: {0}", query);
  // Create the query ...
  final org.modeshape.jcr.api.query.Query jcrQuery = (org.modeshape.jcr.api.query.Query)getLocalSession().getSession().getWorkspace().getQueryManager().createQuery(query,
                                                                                   language);
  return jcrQuery.explain().getPlan();
}

代码示例来源:origin: ModeShape/modeshape

query.bindValue("sysName", valueFactory().createValue(newNode1.getIdentifier()));
validateQuery().rowCount(1L).useIndex("refIndex").validate(query, query.execute());
query.bindValue("sysName", valueFactory().createValue(newNode1.getIdentifier()));
validateQuery().rowCount(1L).useIndex("refIndex").validate(query, query.execute());
query.bindValue("sysName", valueFactory().createValue("X"));
validateQuery().rowCount(1L).useIndex("sysIndex").validate(query, query.execute());
query.bindValue("sysName", valueFactory().createValue("X"));
validateQuery().rowCount(1L).considerIndexes("refIndex", "sysIndex").validate(query, query.execute());

代码示例来源:origin: ModeShape/modeshape

@Test
public void shouldUseSingleColumnDateIndexInQueryAgainstSameNodeType() throws Exception {
  registerValueIndex("dateIndex", "mix:lastModified", "Date value index", "*", "jcr:lastModified", PropertyType.DATE);
  // print = true;
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  Node obj1 = root.addNode("notionalObjectA");
  obj1.addMixin("mix:lastModified");
  Node obj2 = root.addNode("notionalObjectB");
  obj2.addMixin("mix:lastModified");
  // Create a node that is not a 'notion:typed' and therefore won't be included in the query ...
  Node other = root.addNode("somethingElse");
  other.setProperty("jcr:lastModified", Calendar.getInstance());
  session.save();
  // Issues some queries that should use this index ...
  Query query = jcrSql2Query("SELECT * FROM [mix:lastModified] WHERE [jcr:lastModified] > CAST('2012-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(2L).validate(query, query.execute());
  query = jcrSql2Query("SELECT * FROM [mix:lastModified] WHERE [jcr:lastModified] < CAST('2999-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(2L).validate(query, query.execute());
  // Issue a query that does not use this index ...
  query = jcrSql2Query("SELECT * FROM [nt:unstructured] WHERE [jcr:lastModified] > CAST('2012-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(3L).validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

@FixFor( "MODE-1901" )
@Test
public void shouldExplainQueryWithoutExecutingQuery() throws RepositoryException {
  String sql = "SELECT * FROM [nt:file]";
  org.modeshape.jcr.api.query.Query query = session.getWorkspace().getQueryManager().createQuery(sql, Query.JCR_SQL2);
  org.modeshape.jcr.api.query.QueryResult result = query.explain();
  validateQuery().rowCount(0).warnings(0).onlyQueryPlan().validate(query, result);
}

代码示例来源:origin: ModeShape/modeshape

@FixFor( "MODE-2307" )
@Test
public void shouldUseSingleColumnStringIndexForQueryWithJoin() throws Exception {
  registerNodeType("nt:typeWithReference");
  registerNodeType("nt:typeWithSysName");
  registerValueIndex("refIndex", "nt:typeWithReference", null, "*", "referenceId", PropertyType.STRING);
  registerValueIndex("sysIndex", "nt:typeWithSysName", null, "*", "sysName", PropertyType.STRING);
  registerNodeTypeIndex("typesIndex", "nt:base", null, "*", "jcr:primaryType", PropertyType.STRING);
  // print = true;
  Node root = session().getRootNode();
  Node newNode1 = root.addNode("nodeWithSysName", "nt:typeWithSysName");
  newNode1.setProperty("sysName", "X");
  newNode1.addMixin("mix:referenceable");
  Node newNode2 = root.addNode("nodeWithReference", "nt:typeWithReference");
  newNode2.setProperty("referenceId", newNode1.getIdentifier());
  session.save();
  // Compute a query plan that should use this index ...
  Query query = jcrSql2Query("SELECT A.* FROM [nt:typeWithReference] AS A "
                + "JOIN [nt:typeWithSysName] AS B ON A.referenceId  = B.[jcr:uuid] " //
                + "WHERE B.sysName = $sysName");
  query.bindValue("sysName", valueFactory().createValue("X"));
  validateQuery().rowCount(1L).considerIndexes("sysIndex", "refIndex", "typesIndex").validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

@Test
public void shouldUseSingleColumnDateAsLongIndexInQueryAgainstSameNodeType() throws Exception {
  registerValueIndex("dateIndex", "mix:lastModified", "Date value index", "*", "jcr:lastModified", PropertyType.LONG);
  // print = true;
  // Add a node that uses this type ...
  Node root = session().getRootNode();
  Node obj1 = root.addNode("notionalObjectA");
  obj1.addMixin("mix:lastModified");
  Node obj2 = root.addNode("notionalObjectB");
  obj2.addMixin("mix:lastModified");
  // Create a node that is not a 'notion:typed' and therefore won't be included in the query ...
  Node other = root.addNode("somethingElse");
  other.setProperty("jcr:lastModified", Calendar.getInstance());
  session.save();
  // Issues some queries that should use this index ...
  Query query = jcrSql2Query("SELECT * FROM [mix:lastModified] WHERE [jcr:lastModified] > CAST('2012-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(2L).validate(query, query.execute());
  query = jcrSql2Query("SELECT * FROM [mix:lastModified] WHERE [jcr:lastModified] < CAST('2999-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(2L).validate(query, query.execute());
  // Issue a query that does not use this index ...
  query = jcrSql2Query("SELECT * FROM [nt:unstructured] WHERE [jcr:lastModified] > CAST('2012-10-21T00:00:00.000' AS DATE)");
  validateQuery().rowCount(3L).validate(query, query.execute());
}

代码示例来源:origin: ModeShape/modeshape

validateQuery().rowCount(2L).useIndex("pathIndex").validate(query, query.execute());
query.bindValue("value", session().getValueFactory().createValue("value1"));
validateQuery().rowCount(2L).useIndex("pathIndex").validate(query, query.execute());
validateQuery().rowCount(2L).useIndex("pathIndex").validate(query, query.execute());
query.bindValue("value", session().getValueFactory().createValue("value1"));
validateQuery().rowCount(2L).useIndex("pathIndex").validate(query, query.execute());
validateQuery().rowCount(1L).useIndex("titleIndex").validate(query, query.execute());
validateQuery().rowCount(1L).useIndex("titleIndex").validate(query, query.execute());

代码示例来源:origin: ModeShape/modeshape

final QueryManager queryManager = session.getWorkspace().getQueryManager();
final Query query = queryManager.createQuery(sql, Query.JCR_SQL2);
final QueryResult result = query.execute();

相关文章

微信公众号

最新文章

更多

Query类方法