Ich arbeite mit der Legacy-Datenbank und verfüge über eine Viele-zu-Viele-Verknüpfung mit einer Join-Tabelle, die ich zu einem großen Teil aufgelöst habe, da die Mappings gut funktionieren. Aber es gibt eine zusätzliche Spalte und im Fall von Book, Author-Modell lässt sich sagen, dass die nm_author_books ein Feld namens "Royalty" enthalten. Frage: Wie kann ich von jeder Richtung auf dieses Feld zugreifen?
%Vor%Wenn die Tabelle nm_author_book [nm_book_id, nm_author_id, royalty] hat, wie kann man auf die Lizenzgebühr zugreifen?
Sie könnten ein Domänenobjekt erstellen, das diese Join-Tabelle modelliert. Anstatt also die Zuordnung für Buch und Autor zu ändern, müssen Sie auf die AuthorBookRoyalty-Domäne zeigen.
%Vor%Machen Sie Ähnliches für den Autor und Sie können jetzt mit den Lizenzgebühren umgehen. Möglicherweise müssen Sie das Mapping in der Join-Tabelle anpassen, damit es Ihrer aktuellen Datenbank zugeordnet wird.
Die Grundidee ist der Wechsel von 1 Many-to-Man auf Many-to-One: Ein Buch hat viele BookAuthorDetail und ein Autor hat viele BookAuthorDetail
%Vor% Um auf die Lizenzgebühren von BookAuthorDetail zuzugreifen, können Sie Folgendes tun: BookAuthorDetail.findAllByBookAndAuthor(bookInstance, authorInstance)
Tags und Links grails gorm many-to-many jointable