Java - преобразование сущности в объект wsimport

На сервере SOAP я пытаюсь преобразовать класс Entities в объекты, созданные wsimport. У объектов одинаковые геттеры и сеттеры, но сейчас я не знаю, как вставлять геттеры модели в сеттеры объектов wsimport.

Например, мне нужно преобразовать эту модель:

package org.library.webservice.model;

public class User {

    private int id;
    private String firstname;
    private String lastname;
    private String email;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

}

к этому объекту:

package org.library.webservice.service.generated.user;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "user", propOrder = {
        "email",
        "firstname",
        "id",
        "lastname",
        "password"
})
public class User {


    protected int id;
    protected String firstname;
    protected String lastname;
    protected String email;
    protected String password;

    /**
     * Obtient la valeur de la propriete email.
     *
     * @return possible object is
     * {@link String }
     */
    public String getEmail() {
        return email;
    }

    /**
     * Definit la valeur de la propriete email.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setEmail(String value) {
        this.email = value;
    }

    /**
     * Obtient la valeur de la propriete firstname.
     *
     * @return possible object is
     * {@link String }
     */
    public String getFirstname() {
        return firstname;
    }

    /**
     * Definit la valeur de la propriete firstname.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setFirstname(String value) {
        this.firstname = value;
    }

    /**
     * Obtient la valeur de la propriete id.
     */
    public int getId() {
        return id;
    }

    /**
     * Definit la valeur de la propriete id.
     */
    public void setId(int value) {
        this.id = value;
    }

    /**
     * Obtient la valeur de la propriete lastname.
     *
     * @return possible object is
     * {@link String }
     */
    public String getLastname() {
        return lastname;
    }

    /**
     * Definit la valeur de la propriete lastname.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setLastname(String value) {
        this.lastname = value;
    }

    /**
     * Obtient la valeur de la propriete password.
     *
     * @return possible object is
     * {@link String }
     */
    public String getPassword() {
        return password;
    }

    /**
     * Definit la valeur de la propriete password.
     *
     * @param value allowed object is
     *              {@link String }
     */
    public void setPassword(String value) {
        this.password = value;
    }


}

Я думаю, что это возможно при универсальности и рефлексивности, но я не знаю, как это сделать.

1
0
136
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вам нужно использовать средство отображения Java Bean-Bean, такое как Dozer или MapStruct. Я использовал MapStruct, и его было действительно легко настроить и использовать.

Используя MapStruct, необходимо создать этот интерфейс:

@Mapper
public interface UserMapper {

    UserMapper INSTANCE = Mappers.getMapper( UserMapper.class );

    org.library.webservice.service.generated.user.User toDto(org.library.webservice.model.User user);

    org.library.webservice.model.User toEntity(org.library.webservice.service.generated.user.User user);
}

Это все, что вам нужно, чтобы заставить его работать (хорошо, вы должны использовать maven и добавить обработчик аннотаций mapstruct в плагины, но это приемлемо для того, чтобы не писать Java-коды для преобразований), потому что имена полей одинаковы в обоих bean-компонентах. учебный класс.

MapStruct сгенерирует правильную реализацию, и вы можете проверить сгенерированный источник, что он ведет себя так, как вы ожидаете, в целевой папке, если нет, вы можете изменить способ работы с помощью определенных аннотаций или с помощью класса декоратора, пожалуйста, проверьте документацию для этого.

Я думаю, лучший способ, если вы используете аннотацию JAXB в своем классе нравится:

@XmlRootElement
public class User {
   @XmlElement
   private int id;
}

после этого вы можете автоматически сгенерировать схему wsdl, посмотрите это ссылка на сайт

Другие вопросы по теме