Spring — Xsd-файл с конструктором

#java #xml #spring #xsd

#java #xml #весна #xsd

Вопрос:

У меня есть класс сущности, автоматически сгенерированный из файла xsd; проблема в том, что у него нет конструктора, и я должен добавить его вручную.

Как я могу указать конструктор? Вот мой xsd-файл:

entities.xsd

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"     xmlns:tns="http://capgemini.it/soap/entity/generated"
       targetNamespace="http://capgemini.it/soap/entity/generated" elementFormDefault="qualified">

<xs:element name="getEntityRequest">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:element name="getEntityResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="entity" type="tns:entity"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

<xs:complexType name="entity">
    <xs:sequence>
        <xs:element name="firstName" type="xs:string"/>
        <xs:element name="lastName" type="xs:string"/>
        <xs:element name="cf" type="xs:string"/>
        <xs:element name="role" type="xs:string"/>
        <xs:element name="valid" type="xs:boolean"/>
        <xs:element name="isIta" type="xs:boolean"/>
        <xs:element name="sesso" type="xs:boolean"/>
        <xs:element name="nationalNumber" type="xs:string"/>
        <xs:element name="crs" type="xs:string"/>
        <xs:element name="lvlId" type="xs:int"/>
        <xs:element name="qual" type="xs:string"/>
    </xs:sequence>
</xs:complexType>
  

Спасибо за любое предложение 🙂

Комментарии:

1. Вы не можете, поскольку это не то, для чего предназначен xsd. Кроме того, зачем вам нужно добавлять конструктор? По умолчанию доступен конструктор без аргументов.

2. Поскольку я хочу использовать объект, созданный из файла xsd, разве это не правильный подход?

3. Тогда просто используйте его. Как указано, конструктор ВСЕГДА доступен, даже если он явно не определен (тогда существует конструктор без аргументов по умолчанию). Итак, опять же, зачем вам нужно добавлять конструктор, чтобы иметь возможность использовать сгенерированный класс. Вы можете просто сделать new Entity() .

4. Хорошо, спасибо. Но что, если мне нужен конструктор с параметрами?

5. Вам придется добавить его самостоятельно, но, как правило, это неразумно. Эти сгенерированные классы также используются фреймворками маршалинга / демонтажа, за исключением конструктора без аргументов. Также вы не должны (IMHO) использовать эти вещи как объекты в своем приложении, только для транспортировки (в качестве контракта). Это точка интеграции для вашего приложения.