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

Polymorfní patří do mnoha k mnoha mapování v grálech?

Hibernate může mapovat rozhraní - viz příklad . Pochybuji, že to Grails podporuje v mapování podle konvence – ale můžete zkusit použít mapování poznámky z výše uvedeného příkladu nebo XML config.

upravit :odpověď na otázku komentáře:

Na úrovni databáze musíte mít Taggable tabulka pro Tag.References odkazovat pomocí cizího klíče.

  1. Diskriminátor NEBUDE překonávat polymorfismus, pokud je přidán automaticky – například při mapování tabulky na hierarchii Hibernate/Gorm přidá class pole za účelem zjištění konkrétní třídy při čtení objektu z db.

  2. Pokud namapujete Taggable s na dvě tabulky - Taggable část na Taggable a vše ostatní do konkrétní tabulky s odkazem 1:1 – veškerou práci s diskriminátorem by za vás měla udělat Hibernate.

BTW class pole je pěkně dlouhé – obsahuje plně kvalifikovaný název třídy .

úprava 2 :Ať tak či onak, začíná to být docela složité a já osobně bych zvolil přístup, který jsem navrhl v jiné otázce :

  • dynamicky dotazujte všechny třídy s rozhraním Taggable pro hasMany=[tags:Tag] vlastnictví;
  • nebo, což je méně výhodné - mít ručně vyrobený dětský stůl a diskriminátor.



  1. Jak vytvořit uloženou agregační funkci MySQL?

  2. Jak zrušit deklaraci svazků v obrazu dockeru?

  3. Nejlepší způsob, jak najít poslední vložené ID v mysql pomocí php

  4. Automatické nebo pravidelné zálohování dat mysql