【发布时间】:2018-01-08 21:45:04
【问题描述】:
我正在尝试做一些我应该很简单的事情......但是我遇到了一些问题。
表省:
CODISTPROV NAME SIGPROV
1 MILAN MI
2 ROME RM
3 NAPLES NA
和 TABLE COMUNI:
CODISTPROV CODISTCOM DESC_COM
1 1 XX1
1 2 XX2
2 3 YY3
2 4 YY4
3 5 ZZ5
COMUNI 中的 CODISTPROV 是 PROVINCE 的外键。
xml是
<item-descriptor name="comuniWithSiglaProvincia" writable="false" item-cache-timeout="86400000" item-expire-timeout="604800000">
<table name="province" type="primary" id-column-names="codistprov">
<property name="sigla_provincia" data-type="String" column-name="sigprov" display-name-resource="Sigla provincia"/>
</table>
<table name="comuni" type="multi" id-column-names="codistprov,codistcom" multi-column-name="codistcom">
<property name="listaComuni" data-type="list" component-data-type="String" column-name="desc_com" />
</table>
</item-descriptor>
我想实现这个查询
SELECT C.DESC_COM,P.SIGPROV
FROM COMUNI C, PROVINCE P
WHERE C.DESC_COM LIKE 'PAR%' AND C.CODISTPROV = P.CODISTPROV;
其中 PAR 是输入中的一些字符。 代码:
RepositoryView view = getTopoAnagraficaRepository().getView("comuniWithSiglaProvincia");
Object params[] = new Object[1];
params[0] = comuneInitialCharacters;
QueryBuilder repositoryBuilder = view.getQueryBuilder();
QueryExpression prop = repositoryBuilder.createPropertyQueryExpression(PROPERTY_LISTA_COMUNI);
QueryExpression value = repositoryBuilder.createConstantQueryExpression(new String(comuneInitialCharacters));
Query query = repositoryBuilder.createPatternMatchQuery(prop, value, QueryBuilder.STARTS_WITH);
listRepItem = view.executeQuery(query); // 19 results
if(listRepItem != null){
for (RepositoryItem item : listRepItem) {
System.out.println("PROV=" + item.getPropertyValue("sigla_provincia")); // it prints correct value
if (item.getPropertyValue("listaComuni") != null) // ArrayIndexOutOfBoundException
[...]
查询返回 19 listRepItem(它是正确的)但是当我尝试访问子列表时,我在上面的最后一行中得到了 ArrayIndexOutOfBoundException。
有什么提示吗? 访问作为列表的属性值的正确方法是什么?
以上面的数据为例,如果输入字符是“XX”,我应该得到结果
XX1 MI
XX2 MI
谢谢
【问题讨论】:
-
请确认您是否在“Nucleus running ...”消息之前的日志中收到与存储库相关的任何错误?
-
是的,我确认了
-
请在问题中包含您看到的错误?
标签: sql oracle join repository atg