Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Relacja JPA OneToMany/ManyToOne nie działa - Czego mi brakuje?

Najważniejszą rzeczą, na którą będziesz chciał uważać, jest zdefiniowanie strony właściciela relacji poprawnie. O ile dobrze pamiętam, moim wnioskiem z (czasem trudnej do zrozumienia) oficjalnej dokumentacji było to, że strona będąca właścicielem jest w zasadzie tą, która domyślnie uruchamia kaskady i przejrzyste usunięcia.

Na przykład powyżej zdefiniowałeś stronę będącą właścicielem jako ProjectEntity , więc najważniejszym krokiem do działania kaskadowej trwałości jest dodanie projektu do PersonEntity.projects .

Będziesz wtedy chciał zadzwonić persist po stronie właściciela relacji, tj.

em.persist(projectTest);

Jeśli to nie pomoże, sugerowałbym włączenie logowania SQL u swojego dostawcy JPA, aby dowiedzieć się, jakie instrukcje próbuje on wykonać, a zwłaszcza w jakiej kolejności te encje są insert wyd.

Spróbuj również, zgodnie z istniejącymi komentarzami, najpierw zachować osobę. Jeśli to zrobisz, uważam, że właściwym sposobem jest dodanie utrwalonego podmiot do relacji, tj.:

PersonEntity persistedPerson = em.persist(personTest);
projectTest.setPersonId(persistedPerson);
em.persist(projectTest);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Maksymalny rozmiar tabeli dla bazy danych MySQL

  2. Jak mogę uruchomić i sprawdzić mój dziennik MySQL?

  3. Klasy zagnieżdżone — CustomRowMapper !! To już nie problem!! - Część 2

  4. Osiągnij hierarchię, relacje rodzic/dziecko w skuteczny i łatwy sposób

  5. Jaka jest różnica między wartościami nie jest zerem a nie jest zerem?