# Why does the JPA @ManyToMany association remove all entries and reinserts the remaining ones back upon modifications

**URL:** <https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252>\
**Category:** Hibernate ORM\
**Created:** [February 11, 2019, 12:57pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252 "2019-02-11T12:57:07Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![marianafsoares](https://avatars.discourse-cdn.com/v4/letter/m/ea5d25/32.png) [@marianafsoares](https://discourse.hibernate.org/u/marianafsoares)\
**Post date:** [February 11, 2019, 12:57pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/1 "2019-02-11T12:57:07Z")

</div>

I have a many-to-many relationship and every time I do an update of any field of the entity, it generates the delete of all relations and then re-inserts them. So I have unnecessary operations. Always a delete and xx insert.

For example I have a person who has many associated devices. If I assign that person a card or change the name, it generates a delete of all the devices (in the corresponding table) and then insert them of all the devices I had.

How can I avoid those delete insert and just leave the update of the name or card of the person?

Try putting CASCADE.all and putting nothing

```
@ManyToMany(targetEntity=com.inodes.hrdata.entities.CaptureDevice.class, cascade={CascadeType.REFRESH, CascadeType.MERGE})
@ForeignKey(name="FK_PERSON_DEVICE", inverseName="FK_DEVICE_PERSON")
@JoinTable(
		name="PERSON_DEVICE", 
		joinColumns=@JoinColumn(name="PERSON_UID"),
		inverseJoinColumns=@JoinColumn(name="DEVICE_UID")
		)
private List<CaptureDevice> devices = new ArrayList<CaptureDevice>();
```

---

<div class="post-metadata">

**Author:** ![vlad](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/vlad/32/658_2.png) [@vlad](https://discourse.hibernate.org/u/vlad)\
**Post date:** [February 11, 2019, 1:32pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/3 "2019-02-11T13:32:25Z")

</div>

There are two ways to fix this issue:

1. You replace the `List` with a `Set`:

2. Or, you map the intermediarry table as an entity, and replace the `@ManyToMany` association with two bidirectional `@OneToMany` associations. For more details, check out [this article](https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/).

---

<div class="post-metadata">

**Author:** ![marianafsoares](https://avatars.discourse-cdn.com/v4/letter/m/ea5d25/32.png) [@marianafsoares](https://discourse.hibernate.org/u/marianafsoares)\
**Post date:** [February 11, 2019, 3:24pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/4 "2019-02-11T15:24:05Z")

</div>

Use the first option and it did not work.  
I must change something in the annotations

---

<div class="post-metadata">

**Author:** ![vlad](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/vlad/32/658_2.png) [@vlad](https://discourse.hibernate.org/u/vlad)\
**Post date:** [February 11, 2019, 3:27pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/5 "2019-02-11T15:27:01Z")

</div>

> Use the first option and it did not work.

If it worked before for `List`, it will work for `Set`. The only difference is that the `Set` will allow Hibernate to execute more efficient SQL statements.

---

<div class="post-metadata">

**Author:** ![marianafsoares](https://avatars.discourse-cdn.com/v4/letter/m/ea5d25/32.png) [@marianafsoares](https://discourse.hibernate.org/u/marianafsoares)\
**Post date:** [February 11, 2019, 3:45pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/6 "2019-02-11T15:45:13Z")

</div>

I meant that the delete and insert statements for each device continue to appear unnecessarily.  
Nothing broke

---

<div class="post-metadata">

**Author:** ![vlad](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/vlad/32/658_2.png) [@vlad](https://discourse.hibernate.org/u/vlad)\
**Post date:** [February 11, 2019, 4:20pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/7 "2019-02-11T16:20:11Z")

</div>

> [@marianafsoares](#):
>
> I meant that the delete and insert statements for each device continue to appear unnecessarily.

If you run this [`BidirectionalManyToManySetTest`](https://github.com/vladmihalcea/high-performance-java-persistence/blob/951db3fb0f6e9e699d4023044aa6baaeaec54696/core/src/test/java/com/vladmihalcea/book/hpjp/hibernate/association/BidirectionalManyToManySetTest.java), you will see that using `Set` with `@ManyToMany` does not generate any DELETE ALL entries upon updating the many-to-many association.

Try to replicate it with this [test case template](http://in.relation.to/2016/01/14/hibernate-jpa-test-case-template/), and if you can, add the link to the GitHub repository so I can take a look at it.

---

<div class="post-metadata">

**Author:** ![marianafsoares](https://avatars.discourse-cdn.com/v4/letter/m/ea5d25/32.png) [@marianafsoares](https://discourse.hibernate.org/u/marianafsoares)\
**Post date:** [February 11, 2019, 8:39pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/8 "2019-02-11T20:39:43Z")

</div>

It is a very big project to be able to put it on github  
I can pass what I tell you in a text file with the mysql sentences

…190211 17:13:44 server id 1 end\_log\_pos 10051 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
delete from hrdata.PERSON\_DEVICE where PERSON\_UID=‘40288f8260eb11bb0161b8af46b30d26’/_!_/;

# at 501626

#190211 17:13:44 server id 1 end\_log\_pos 10199 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
delete from hrdata.PERSON\_ROUTE where PERSON\_UID=‘40288f8260eb11bb0161b8af46b30d26’/_!_/;

# at 501774

#190211 17:13:44 server id 1 end\_log\_pos 10401 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec23cab80075’)/_!_/;

# at 501976

#190211 17:13:44 server id 1 end\_log\_pos 10603 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec20d4d20071’)/_!_/;

# at 502178

#190211 17:13:44 server id 1 end\_log\_pos 10805 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebdaa2b1001c’)/_!_/;

# at 502380

#190211 17:13:44 server id 1 end\_log\_pos 11007 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebec421f0033’)/_!_/;

# at 502582

#190211 17:13:44 server id 1 end\_log\_pos 11209 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebe9b69a002f’)/_!_/;

# at 502784

#190211 17:13:44 server id 1 end\_log\_pos 11411 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebedf7440035’)/_!_/;

# at 502986

#190211 17:13:44 server id 1 end\_log\_pos 11613 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebdcf3bf0020’)/_!_/;

# at 503188

#190211 17:13:44 server id 1 end\_log\_pos 11815 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebb850bf000c’)/_!_/;

# at 503390

#190211 17:13:44 server id 1 end\_log\_pos 12017 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebddeee50022’)/_!_/;

# at 503592

#190211 17:13:44 server id 1 end\_log\_pos 12219 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1b809a0069’)/_!_/;

# at 503794

#190211 17:13:44 server id 1 end\_log\_pos 12421 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0db3da0053’)/_!_/;

# at 503996

#190211 17:13:44 server id 1 end\_log\_pos 12623 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec199c130063’)/_!_/;

# at 504198

#190211 17:13:44 server id 1 end\_log\_pos 12825 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebe86798002d’)/_!_/;

# at 504400

#190211 17:13:44 server id 1 end\_log\_pos 13027 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1628aa0059’)/_!_/;

# at 504602

#190211 17:13:44 server id 1 end\_log\_pos 13229 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebcb0d220016’)/_!_/;

# at 504804

#190211 17:13:44 server id 1 end\_log\_pos 13431 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebaf2a350008’)/_!_/;

# at 505006

#190211 17:13:44 server id 1 end\_log\_pos 13633 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1cab30006d’)/_!_/;

# at 505208

#190211 17:13:44 server id 1 end\_log\_pos 13835 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf380e8003f’)/_!_/;

# at 505410

#190211 17:13:44 server id 1 end\_log\_pos 14037 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec083cb10049’)/_!_/;

# at 505612

#190211 17:13:44 server id 1 end\_log\_pos 14239 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8761e1a3c70161e21beb9400a9’)/_!_/;

# at 505814

#190211 17:13:44 server id 1 end\_log\_pos 14441 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8266d4b0480167320680c63d5d’)/_!_/;

# at 506016

#190211 17:13:44 server id 1 end\_log\_pos 14643 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf7403d0043’)/_!_/;

# at 506218

#190211 17:13:44 server id 1 end\_log\_pos 14845 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf46da60041’)/_!_/;

# at 506420

#190211 17:13:44 server id 1 end\_log\_pos 15047 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0cfb8c0051’)/_!_/;

# at 506622

#190211 17:13:44 server id 1 end\_log\_pos 15249 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1a36e40065’)/_!_/;

# at 506824

#190211 17:13:44 server id 1 end\_log\_pos 15451 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0f4e380057’)/_!_/;

# at 507026

#190211 17:13:44 server id 1 end\_log\_pos 15653 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebe1180f0026’)/_!_/;

# at 507228

#190211 17:13:44 server id 1 end\_log\_pos 15855 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0c394d004f’)/_!_/;

# at 507430

#190211 17:13:44 server id 1 end\_log\_pos 16057 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec16dbf7005b’)/_!_/;

# at 507632

#190211 17:13:44 server id 1 end\_log\_pos 16259 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1ae27b0067’)/_!_/;

# at 507834

#190211 17:13:44 server id 1 end\_log\_pos 16461 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1903380061’)/_!_/;

# at 508036

#190211 17:13:44 server id 1 end\_log\_pos 16663 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf2c824003d’)/_!_/;

# at 508238

#190211 17:13:44 server id 1 end\_log\_pos 16865 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0ea80c0055’)/_!_/;

# at 508440

#190211 17:13:44 server id 1 end\_log\_pos 17067 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebd3be4f001a’)/_!_/;

# at 508642

#190211 17:13:44 server id 1 end\_log\_pos 17269 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1c13ce006b’)/_!_/;

# at 508844

#190211 17:13:44 server id 1 end\_log\_pos 17471 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160eba12fb90002’)/_!_/;

# at 509046

#190211 17:13:44 server id 1 end\_log\_pos 17673 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1852b5005f’)/_!_/;

# at 509248

#190211 17:13:44 server id 1 end\_log\_pos 17875 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0b5db6004d’)/_!_/;

# at 509450

#190211 17:13:44 server id 1 end\_log\_pos 18077 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘4028817068bdad320168bdc1bf4b0010’)/_!_/;

# at 509652

#190211 17:13:44 server id 1 end\_log\_pos 18279 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebe5664c0029’)/_!_/;

# at 509854

#190211 17:13:44 server id 1 end\_log\_pos 18481 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec09dc1c004b’)/_!_/;

# at 510056

#190211 17:13:44 server id 1 end\_log\_pos 18683 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec1d5e27006f’)/_!_/;

# at 510258

#190211 17:13:44 server id 1 end\_log\_pos 18885 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f826658c0c90166a6710dea3a68’)/_!_/;

# at 510460

#190211 17:13:44 server id 1 end\_log\_pos 19087 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebb3491d000a’)/_!_/;

# at 510662

#190211 17:13:44 server id 1 end\_log\_pos 19289 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebc8668f0012’)/_!_/;

# at 510864

#190211 17:13:44 server id 1 end\_log\_pos 19491 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebdbaaf5001e’)/_!_/;

# at 511066

#190211 17:13:44 server id 1 end\_log\_pos 19693 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebeaa8840031’)/_!_/;

# at 511268

#190211 17:13:44 server id 1 end\_log\_pos 19895 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec2238480073’)/_!_/;

# at 511470

#190211 17:13:44 server id 1 end\_log\_pos 20097 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160eb9e3a3b0000’)/_!_/;

# at 511672

#190211 17:13:44 server id 1 end\_log\_pos 20299 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0761890047’)/_!_/;

# at 511874

#190211 17:13:44 server id 1 end\_log\_pos 20501 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf00f330037’)/_!_/;

# at 512076

#190211 17:13:44 server id 1 end\_log\_pos 20703 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf10f410039’)/_!_/;

# at 512278

#190211 17:13:44 server id 1 end\_log\_pos 20905 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebf1e4b9003b’)/_!_/;

# at 512480

#190211 17:13:44 server id 1 end\_log\_pos 21107 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebe6e0b0002b’)/_!_/;

# at 512682

#190211 17:13:44 server id 1 end\_log\_pos 21309 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ec0623c90045’)/_!_/;

# at 512884

#190211 17:13:44 server id 1 end\_log\_pos 21511 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebaa02ab0006’)/_!_/;

# at 513086

#190211 17:13:44 server id 1 end\_log\_pos 21713 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160eba8204b0004’)/_!_/;

# at 513288

#190211 17:13:44 server id 1 end\_log\_pos 21915 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebdf67610024’)/_!_/;

# at 513490

#190211 17:13:44 server id 1 end\_log\_pos 22117 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_DEVICE (PERSON\_UID, DEVICE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0160ebcd7d370018’)/_!_/;

# at 513692

#190211 17:13:44 server id 1 end\_log\_pos 22317 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f826388060a0163b66e90a518e6’)/_!_/;

# at 513892

#190211 17:13:44 server id 1 end\_log\_pos 22517 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1b97510293’)/_!_/;

# at 514092

#190211 17:13:44 server id 1 end\_log\_pos 22717 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610fde84d9029a’)/_!_/;

# at 514292

#190211 17:13:44 server id 1 end\_log\_pos 22917 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f87632b338b01632bafba260019’)/_!_/;

# at 514492

#190211 17:13:44 server id 1 end\_log\_pos 23117 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb0161dd313e861996’)/_!_/;

# at 514692

#190211 17:13:44 server id 1 end\_log\_pos 23317 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1569420290’)/_!_/;

# at 514892

#190211 17:13:44 server id 1 end\_log\_pos 23517 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610fdcc9500298’)/_!_/;

# at 515092

#190211 17:13:44 server id 1 end\_log\_pos 23717 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610fda05130297’)/_!_/;

# at 515292

#190211 17:13:44 server id 1 end\_log\_pos 23917 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f87632b338b01632bac9c1d0015’)/_!_/;

# at 515492

#190211 17:13:44 server id 1 end\_log\_pos 24117 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f3445b50296’)/_!_/;

# at 515692

#190211 17:13:44 server id 1 end\_log\_pos 24317 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f87632b338b01632baed3760018’)/_!_/;

# at 515892

#190211 17:13:44 server id 1 end\_log\_pos 24517 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1a773e0291’)/_!_/;

# at 516092

#190211 17:13:44 server id 1 end\_log\_pos 24717 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f826388060a0163b6b5f5341a95’)/_!_/;

# at 516292

#190211 17:13:44 server id 1 end\_log\_pos 24917 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f826388060a0163b66e436718e5’)/_!_/;

# at 516492

#190211 17:13:44 server id 1 end\_log\_pos 25117 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1afd270292’)/_!_/;

# at 516692

#190211 17:13:44 server id 1 end\_log\_pos 25317 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8761e1a3c70161fc2f1f320396’)/_!_/;

# at 516892

#190211 17:13:44 server id 1 end\_log\_pos 25517 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f826388060a0163b6656d6b18e4’)/_!_/;

# at 517092

#190211 17:13:44 server id 1 end\_log\_pos 25717 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘00000000000000000000000000000002’)/_!_/;

# at 517292

#190211 17:13:44 server id 1 end\_log\_pos 25917 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8263b716950163bb76176709a7’)/_!_/;

# at 517492

#190211 17:13:44 server id 1 end\_log\_pos 26117 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1e1a690294’)/_!_/;

# at 517692

#190211 17:13:44 server id 1 end\_log\_pos 26317 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f8260eb11bb01610f1f173f0295’)/_!_/;

# at 517892

#190211 17:13:44 server id 1 end\_log\_pos 26517 Query thread\_id=2 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PERSON\_ROUTE (PERSON\_UID, ROUTE\_UID) values (‘40288f8260eb11bb0161b8af46b30d26’, ‘40288f87632b338b01632bae80590017’)/_!_/;

# at 518092

#190211 17:13:44 server id 1 end\_log\_pos 518119 Xid = 8106  
COMMIT/_!_/;

# at 518119

#190211 17:13:44 server id 1 end\_log\_pos 518189 Query thread\_id=4 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
BEGIN/_!_/;

# at 518189

#190211 17:13:44 server id 1 end\_log\_pos 407 Query thread\_id=4 exec\_time=0 error\_code=0  
SET TIMESTAMP=1549916024/_!_/;  
insert into hrdata.PENDING\_ACTION (ACTION, ACTION\_DATE, CARD\_NUMBER1, CARD\_NUMBER2, CARD\_TYPE\_UID1, CARD\_TYPE\_UID2, CDEVICE\_UID, PERSON\_UID, ACTION\_UID) values (‘DELETE\_CARD’, ‘2019-02-12 05:13:00’, ‘87987897654654’, null, ‘40288f876296aa810162d89ca16b0873’, null, null, ‘40288f8260eb11bb0161b8af46b30d26’, ‘4028817068de30950168de31b0540003’)/_!_/;

# at 518596

#190211 17:13:44 server id 1 end\_log\_pos 518623 Xid = 8213  
COMMIT/_!_/;  
DELIMITER ;

# End of log file

ROLLBACK /\* added by mysqlbinlog _/;  
/_!50003 SET COMPLETION\_TYPE=@OLD\_COMPLETION\_TYPE\*/;

---

<div class="post-metadata">

**Author:** ![vlad](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.hibernate.org/vlad/32/658_2.png) [@vlad](https://discourse.hibernate.org/u/vlad)\
**Post date:** [February 11, 2019, 9:00pm UTC](https://discourse.hibernate.org/t/why-does-the-jpa-manytomany-association-remove-all-entries-and-reinserts-the-remaining-ones-back-upon-modifications/2252/9 "2019-02-11T21:00:58Z")

</div>

You only need 2 entities to replicate the many-to-many association behaviour. The lig are not useful without seeing the code, hence ypu need to create a replicating test case.
