Pergunta

Eu tenho uma classe abstrata super-:

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

Essa classe tem uma subclasse:

public abstract class MultiQuery extends Query {

e esta última classe de super também tem duas subclasses:. AndQuery e OrQuery anotado com @XmlRootNode

Eu também tenho uma classe PropertyQuery que se estende de consulta classe super.

Tudo o que é ok quando eu faço um post como este:

<?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>

O que eu quero é para postar um xml como este:

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

insteand do que eu coloquei acima.

Pode dizer-me por favor o que eu tenho para anotar porque meus OrQuery espera de classe para ver apenas consulta nós não e!

Por favor, ajuda ...

Muito obrigado

Foi útil?

Solução

Parece que você está tentando ter muitas das suas consultas conter outras consultas. Vamos apenas dizer, você quer qualquer MultiQuery para conter uma lista de outras consultas.

Se você tem apenas uma lista do tipo de consulta, JAXB não será capaz de determinar quais tipos de consultas que você deseja colocar na lista. Você pode especificar todas as opções para o que a lista pode conter. Desta forma, o esquema que é gerado para permitir que qualquer um dos tipos de especificado.

Exemplo:

@XmlElements({
    @XmlElement(type=AndQuery.class),
    @XmlElement(type=OrQuery.class),
    @XmlElement(type=NotQuery.class),
    @XmlElement(type=PropertyQuery.class),
    @XmlElement(type=MultiQuery.class)
})
List<Query> queries;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top