JPA не удаляет дочерние элементы при обновлении родительского в веб-приложении - PullRequest
0 голосов
/ 21 октября 2018

Сущность Author имеет коллекцию объектов Advertising (двунаправленное отношение один-ко-многим) и коллекцию Phone (однонаправленное отношение один-ко-многим).

Автор

public class Author {

    @Id
    @GeneratedValue
    private int id;

    private String nameOfAuthor; 

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)  
    @JoinTable(name = "author_phone",
            joinColumns = @JoinColumn(name = "author_fk_id"),
            inverseJoinColumns = @JoinColumn(name = "phone_fk_id"))
    @Fetch(FetchMode.SELECT)
    private List<Phone> phones = new LinkedList<>();

    @OneToMany(mappedBy = "author", cascade = CascadeType.ALL,
                orphanRemoval = true, fetch = FetchType.EAGER)
        private List<Advertisement> advertisements = new ArrayList<>();
    }

Телефон

public class Phone {

    @Id
    @GeneratedValue
    private int id;

    @Column(name = "phone_number")
    private String phoneNumber;
}

Реклама

public class Advertisement {

    @Id
    @GeneratedValue
    private int id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "advert_author_id_fk")
    @Fetch(FetchMode.JOIN)
    private Author author;
}

Метод сохранения Автор:

public void add(Author author) {             

        em.persist(author);
    }

Метод обновления Автор:

@PersistenceContext
private EntityManager em;
public void update(Author author) {
    Author merge = em.merge(author);
    em.persist(merge);    
}

Когда я отправляю json для обновления, существующего в базе данных Автор выглядит так:

{
  "id": 2,
  "nameOfAuthor": "Segey",
  "advertisements": [],
    "phones":[]
}

JSON для сохранения автора:

{
  "nameOfAuthor": "Segey",

  "advertisements":[],
  "phones":[
    {
    "phoneNumber": "33333"
    }
    ]
}

Я не знаю, почему JPA удаляет все phones, но не advertisements.

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