jaxb - странная проблема - PullRequest
       8

jaxb - странная проблема

0 голосов
/ 16 сентября 2009

У меня супер абстрактный класс:

@XmlSeeAlso({AndQuery.class, OrQuery.class, NotQuery.class, PropertyQuery.class, MultiQuery.class})
@XmlRootElement
public abstract class Query {

Этот класс имеет подкласс:

public abstract class MultiQuery extends Query {

и этот последний суперкласс также имеет два подкласса: AndQuery и OrQuery с аннотацией @ XmlRootNode.

У меня также есть класс PropertyQuery, который расширяет суперкласс Query.

Все нормально, когда я делаю пост, подобный этому:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
                        <orQuery>
                            <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
                                <propertyName>SenderContractNumber</propertyName>
                                <propertyValue>D*</propertyValue>
                            </query>
                           <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
                                <propertyName>SenderContractNumber</propertyName>
                                <propertyValue>A*</propertyValue>
                            </query>
   <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="andQuery">
                            <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
                                <propertyName>documentNumber</propertyName>
                                <propertyValue>222</propertyValue>
                            </query>
                            <query xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="propertyQuery">
                                <propertyName>documentNumber</propertyName>
                                <propertyValue>222</propertyValue>
                            </query>

</query>
</orQuery>

То, что я хочу, это разместить XML как это:

<orQuyery>
     <query>...</query>
     <andQuery>
         <query>...</query>
     </andQuery>
</orQuery>

вместо того, что я положил выше.

Подскажите, пожалуйста, что я должен аннотировать, потому что мой класс OrQuery ожидает, что не будут видеть только узлы запроса!

Пожалуйста, помогите ...

Большое спасибо

1 Ответ

1 голос
/ 21 сентября 2009

Похоже, вы пытаетесь, чтобы во многих ваших запросах содержались другие запросы.Скажем так, вы хотите, чтобы любой MultiQuery содержал список других запросов.

Если у вас есть только список типа Query, JAXB не сможет определить, какие типы запросов вы хотите поместить в список.,Вы можете указать все параметры того, что может содержать список.Таким образом, схема, созданная для разрешения любого из указанных типов.

Пример:

@XmlElements({
    @XmlElement(type=AndQuery.class),
    @XmlElement(type=OrQuery.class),
    @XmlElement(type=NotQuery.class),
    @XmlElement(type=PropertyQuery.class),
    @XmlElement(type=MultiQuery.class)
})
List<Query> queries;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...