2011-03-04 63 views
0
idb:photo 
    idb:uploadName jcr:primaryType="idbt:metaData" idb:value="4.jpg" 
    idb:size jcr:primaryType="idbt:metaData" idb:value="276757" 
    idb:title jcr:primaryType="idbt:metaData" idb:value="Title: 4.jpg" 
idb:photo> 

首先我不能看到我的代码示例! - >点击{}并提交我的代码!Jackrabbit Sql2-Query - > DescendantNodeJoinCondition

我想获得一个照片节点的信息,其中,例如标题是 Title: 4.jpg 我有以下查询:

Query query = queryManager.createQuery("select * from [idbt:photo] as p inner join [idbt:metaData] as c on isdescendantnode(p, c) where c.[idb:value] = 'Title: 4.jpg'", Query.JCR_SQL2); 

我的结果集是空的。它应该填充我的匹配节点!

有什么不对?

问候

回答

0

我不明白节点是如何存储的。它是元数据节点/照片节点还是照片节点/元数据节点?

在查询中你有isdescendantnode(后代,父母),不是吗?它是一个孩子节点吗?你有没有试过ischildnode?看看http://www.h2database.com/jcr/grammar.html#join

你使用的是什么版本的JackRabbit?你怎么知道结果是空的?如果由于某种原因,您正在使用query.execute()。getRows.getSize()尝试获取结果总数,请看https://issues.apache.org/jira/browse/JCR-2765

+0

它存储就像您在上面看到的那样!节点类型是idbt:metadata。我有以下查询工作:查询查询= queryManager.createQuery(“选择*从[idbt:照片]作为右外连接[nt:base]作为c上p.id = c.parentid其中c。[idb :value] like'%4.jpg%'“,Query.JCR_SQL2);和query query = queryManager.createQuery(“select * from [idbt:photo] as p right outer join [nt:base] as c on isdescendantnode(p,c)where c。[idb:value] like'%4.jpg %'“,Query.JCR_SQL2);我如何使synatax突出显示? – alex 2011-03-07 08:03:32