#hibernate #grails #xjc
Вопрос:
Я реализую службу, для которой я использовал XJC для создания классов домена из файла XSD. Сгенерированная Java, которую я перенес в grails, но я не могу установить аннотации XmlAttributes для этих полей, ну, по крайней мере, я не знаю, как это сделать. Как вы это делаете?
Вот где я должен дать представление:
import javax.xml.bind.annotation.XmlAccessType import javax.xml.bind.annotation.XmlAccessorType import javax.xml.bind.annotation.XmlAttribute import javax.xml.bind.annotation.XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "AuditSourceIdentificationType", propOrder = [ "auditSourceTypeCode" ]) class AuditSourceIdentificationType { static hasMany = [ auditSourceTypeCodes: CodedValue //@XmlElement(name = "AuditSourceTypeCode")? ] @XmlAttribute(name = "AuditEnterpriseSiteID") String auditEnterpriseSiteID @XmlAttribute(name = "AuditSourceID", required = true) String auditSourceID }
Любая помощь будет очень признательна.
Ответ №1:
Хорошо, я отложил это на несколько дней, что было именно то, что нужно. Оказывается, я на самом деле не думал о том, как на самом деле настроены классы домена, и по какой-то причине я не объявил поля списком в дополнение к размещению их в объявлении hasMany. Именно так вы устанавливаете аннотации для множества полей.
Прошло довольно много времени с тех пор, как я создал проект grails, и это действительно помогает вам не отставать от своей практики. Исправленный код ниже:
import javax.xml.bind.annotation.XmlAccessType import javax.xml.bind.annotation.XmlAccessorType import javax.xml.bind.annotation.XmlElement import javax.xml.bind.annotation.XmlRootElement import javax.xml.bind.annotation.XmlType @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = [ "eventIdentification", "activeParticipant", "auditSourceIdentification", "participantObjectIdentification" ]) @XmlRootElement(name = "AuditMessage") class AuditMessage { static hasMany = [ activeParticipants: ActiveParticipant, auditSourceIdentifications: AuditSourceIdentificationType, participantObjectIdentifications: ParticipantObjectIdentificationType ] @XmlElement(name = "ActiveParticipant", required = true) List activeParticipants @XmlElement(name = "AuditSourceIdentification", required = true) List auditSourceIdentifications @XmlElement(name = "ParticipantObjectIdentification") List participantObjectIdentifications String auditMessageText @XmlElement(name = "EventIdentification", required = true) EventIdentificationType eventIdentification }'''