sql >> Databáze >  >> RDS >> Mysql

Vztah JPA OneToMany/ManyToOne nefunguje – Co mi chybí?

Hlavní věc, na kterou si budete chtít dát pozor, je definovat vlastnící stranu vztahu správně. Pokud si pamatuji, z (někdy těžko srozumitelné) oficiální dokumentace jsem si vyvodil, že vlastnická strana je v podstatě ta, která ve výchozím nastavení spustí kaskády a transparentní mazání.

Například ve výše uvedeném jste definovali vlastnickou stranu jako ProjectEntity , takže nejdůležitějším krokem pro fungování kaskádové persistence je přidání projektu do PersonEntity.projects .

Poté budete chtít zavolat persist na vlastnické straně vztahu, tj.

em.persist(projectTest);

Pokud to nepomůže, navrhoval bych, abyste u svého poskytovatele JPA povolili protokolování SQL, abyste zjistili, jaké příkazy se pokouší provést, a zejména v jakém pořadí jsou tyto entity insert vyd.

Zkuste také, podle existujících komentářů, nejprve přetrvat osobu. Pokud to uděláte, věřím, že správným způsobem je přidat přetrvávající entity ke vztahu, tj.:

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


  1. Jak načíst všechny řádky, které odpovídají alespoň jedné hodnotě z pole?

  2. Dynamické vytváření dotazů PDO

  3. Přejmenujte tabulku MySQL pomocí příkazu SQL

  4. jak vypadá index B-stromu na více než 1 sloupci?