Свойство вложенного объекта переопределяет свойство top при создании - PullRequest
0 голосов
/ 20 октября 2019

У меня есть две сущности с двунаправленным отношением ManyToOne . Когда я пытаюсь сохранить объект с вложенным объектом, свойство с тем же именем заменяется.

@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String firstName;
    private String lastName;
    private String name;
    @OneToMany(mappedBy = "person")
    private Collection<Phone> phones;

    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 getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Collection<Phone> getPhones() {
        return phones;
    }

    public void setPhones(Collection<Phone> phones) {
        this.phones = phones;
    }
}

@Entity
public class Phone {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    private String number;
    private String name;
    @ManyToOne
    private Person person;

    public long getId() {
        return id;
    }

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

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }
}

И соответствующие репозитории, расширяющие PagingAndSortingRepository с @ RepositoryRestResource аннотациями.

Персона и Телефон сущности имеют общее имя свойство. Когда я создаю новый телефон (сторона владельца в отношении ManyToOne ) отправка запроса POST на http://localhost:8080/phones с полезной нагрузкой

{
    "number": "456765",
    "name": "Alcatel",
    "person": {
        "firstName": "Tom",
        "lastName": "Hanks",
        "name": "Tom Hanks"
    }
}

Я знаю, что это не такотношения обновляются в REST, но во внешнем интерфейсе я использую Angular, и там у меня есть что-то вроде вспомогательных полей, например. person в Phone класс машинописи, и я не хочу обнулять его перед отправкой.

Я получаю ответ с переопределенным name property

{
    "number": "456765",
    "name": "Tom Hanks",
    "_links": {
        "self": {
            "href": "http://localhost:8080/phones/3"
        },
        "phone": {
            "href": "http://localhost:8080/phones/3"
        },
        "person": {
            "href": "http://localhost:8080/phones/3/person"
        }
    }
}

Конечно, я мог бы добавить @ JsonIgnore аннотацию к setPerson метод в Phone class или просто обнулить свойство person при отправке JSON, и оно будет работать правильно, но мне интересно, почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...