Hibernate może mapować interfejs - zobacz przykład . Wątpię, czy Grails obsługuje to w mapowaniu zgodnym z konwencją – ale możesz spróbować użyć mapowania adnotacje z przykładu powyżej lub konfiguracja XML.
edytuj :odpowiadanie na pytanie w komentarzu:
Na poziomie bazy danych musisz mieć Taggable
tabela dla Tag.References
odwołać się za pomocą klucza obcego.
-
Dyskryminator NIE pokona polimorfizmu, jeśli zostanie dodany automatycznie — na przykład w mapowaniu tabeli na hierarchię, Hibernate/Gorm dodaje
class
pole, aby znaleźć konkretną klasę podczas odczytu obiektu z bazy danych. -
Jeśli zmapujesz swój
Taggable
s do dwóch tabel -Taggable
część doTaggable
a wszystko inne do konkretnej tabeli, oznaczonej 1:1 – cała praca nad dyskryminacją powinna być wykonana za Ciebie przez Hibernate.
BTW class
pole jest dość długie - zawiera w pełni kwalifikowaną nazwę klasy .
edytuj 2 :Tak czy inaczej, robi się to dość skomplikowane i osobiście zasugerowałbym podejście, które zasugerowałem w innym pytaniu :
- dynamicznie wysyłaj zapytania do wszystkich klas za pomocą interfejsu Taggable dla
hasMany=[tags:Tag]
nieruchomość; - lub, mniej korzystnie - mieć ręcznie wykonany stolik dziecięcy i rozróżniacz.