sql >> Databáze >  >> RDS >> PostgreSQL

Hibernace 'Inverse' v mapovacím souboru

Inverse pouze rozhodne, která entita ve vztahu je zodpovědná za aktualizaci databáze, aby odrážela asociaci.

Předpokládejme jedno až mnoho obousměrné asociace. V kódu A a B jsou dvě třídy, A obsahuje množinu B, B udržuje odkaz na A. Na úrovni databáze je pouze jeden cizí klíč k aktualizaci, tabulka pro B obsahuje sloupec k primárnímu klíči z A.

V tomto případě předpokládejme, že na množinu vložíme inverzní =true. To znamená, že pouhé přidání entity do sady nespustí aktualizaci cizího klíče. Protože odpovědnost za aktualizaci cizího klíče spočívá na B. Přidání objektu B do sady, kterou A udržuje, tedy nestačí k aktualizaci sloupce cizího klíče. objectA.addToSetOfB(objectB) neovlivní cizí klíč.

Pouze když je B uveden odkaz na A, bude cizí klíč v tabulce pro B aktualizován. ObjektB.setA(objektA) tedy jistě aktualizuje cizí klíč a skutečně nastaví vztah.

Myslím, že stejný koncept se bude týkat i vztahů mezi mnoha a mnoha.



  1. Jak získat neseskupené sloupce v příkazu SQL (podobně jako v MySQL)

  2. LOAD DATA není povoleno v uložených procedurách

  3. MySQL WHERE IN Query - ORDER BY Match

  4. Jak zkontrolovat index v Oracle