Join not returning results
lexsoto Jan 2, 2012 4:26 PMHello:
I am having trouble with this query not returning expected results:
final Session session = repository.login(new SimpleCredentials(getUserName(), getPassword().toCharArray())); final String friendlyNodeType = "tt:friendly"; final String friendPropertyName = "tt:friend"; final NamespaceRegistry registry = session.getWorkspace().getNamespaceRegistry(); registry.registerNamespace("tt", "http://test.com/tt"); final NodeTypeManager manager = session.getWorkspace().getNodeTypeManager(); final NodeTypeTemplate nodeType = manager.createNodeTypeTemplate(); nodeType.setMixin(true); nodeType.setName(friendlyNodeType); nodeType.setQueryable(true); nodeType.setDeclaredSuperTypeNames(new String[]{"mix:referenceable"}); final PropertyDefinitionTemplate propertyDef = manager.createPropertyDefinitionTemplate(); propertyDef.setName(friendPropertyName); propertyDef.setMultiple(true); propertyDef.setRequiredType(PropertyType.REFERENCE); propertyDef.setOnParentVersion(OnParentVersionAction.COPY); propertyDef.setProtected(false); nodeType.getPropertyDefinitionTemplates().add(propertyDef); manager.registerNodeType(nodeType, true); final Node granteeNode = session.getRootNode().addNode("Paul", "nt:folder"); granteeNode.addMixin(friendlyNodeType); final Node grantorNode = session.getRootNode().addNode("Pedro", "nt:folder"); grantorNode.addMixin(friendlyNodeType); final ValueFactory valueFactory = session.getValueFactory(); final Value granteeValue = valueFactory.createValue(granteeNode); grantorNode.setProperty(friendPropertyName, new Value[]{granteeValue}); session.save(); final QueryManager queryManager = session.getWorkspace().getQueryManager(); final String expression = "SELECT grantee.* FROM [tt:friendly] as grantee " + "INNER JOIN [tt:friendly] as grantor " + "ON grantee.[jcr:uuid] = grantor.[tt:friendly]"; final Query query = queryManager.createQuery(expression, "JCR-SQL2"); final QueryResult queryResult = query.execute(); Assert.assertEquals(1, queryResult.getRows().getSize());
I am using version 2.7.0.Final
I expect the query to rerturn Paul's node.
(It works with JackRabbit)
Thanks