rowe42 / lhm_animad_admin_html5

0 stars 6 forks source link

Bidirektionale Beziehungen modellieren, generieren und ggf. fixen #249

Open xdoo opened 6 years ago

xdoo commented 6 years ago

Bei bidirektionalen Referenzen muss darauf geachtet werden, dass beim Speichern und Updaten der Entitäten beide Seiten eine Referenz auf jeweils den anderen haben. Wenn dies bereits der Fall ist, dann kann dieses Ticket geschlossen werden, falls nicht, dann muss es gefixt werden.

Mehr zu dem Thema auf #212

FabianWilms commented 6 years ago

Zu deiner Ursprünglichen Frage:

Weder wird es in Barrakuda automatisch generiert, noch ist es eplizit modellierbar, noch habe ich es bisher in Spring nicht umgesetzt.

Wenn ich bisher die Relationsbeziehungen einer relationierten (?) Entität finden wollte, bietet Spring dafür Unterstützung in den Repositories, z.B: findAnimalsByKeeperOID (oder so ähnlich ;)).

FabianWilms commented 6 years ago

Ich denke aber, dass es ausreichen sollte, in beiden Entitäten die gleiche Join-Table anzugeben. Bin mir sicher, dass JPA/Hibernate das korrekt handhabt.

xdoo commented 6 years ago

@FabianWilms :)

Dr-Thomas-Tensi commented 6 years ago

Das Problem tritt auf, weil es in der AWK-DSL von Barrakuda keine expliziten Assoziationen gibt, sondern nur Links via Attributen zwischen Typen.

Um Relationen zu emulieren (und das löst auch obiges Problem), könnte man die AWK-DSL dahingehend erweitern, dass man bei einem Attribut angibt, welches Attribut im Partnertyp die Rückreferenz bildet.

Also z.B.

entity animal {
        ...
        keeperList manyToMany keeper backref animalList;
        ...
}

Die genaue Syntax ist natürlich zu überlegen.

Auf jeden Fall klappt das für binäre Assoziationen (ich habe früher schon mal eine entsprechende DSL gebaut), für n-äre wird es etwas unhandlich, weil man alle Partnerattribute angeben muss (und das gilt dann für alle Partnertypen).