@ManyToMany ohne join table (legacy-Datenbank)

Ich mich bewerben JPA in einer legacy-Datenbank mit einem schrecklichen design. Leider ist es nicht möglich es zu ändern. Zum Glück ist nur für den nur-lese-Zugriff.

Eines der seltsamsten Dinge, die ich fand, ist eine "viele-zu-viele" - Beziehung ohne eine join - (oder zwischen -) Tabelle. Dies ist eine Vereinfachung der Struktur der Tabelle:

USER                      ACCESS
----                      ------
ID int primary key        ID int primary key
NAME varchar2(20)         NAME varchar2(20)
ACCESS_GROUP int          ACCESS_GROUP int
  • ACCESS_GROUP Spalten wiederholt werden kann, in beiden Tabellen
  • Einem BENUTZER zugeordnet werden können N ZUGANG
  • Einem ZUGANG zugeordnet werden können N BENUTZER

"Konzeptionell" diese Tabellen müssen zugeordnet werden Java-Klassen auf diese Weise:

public class User {
    private Integer id;
    private String name;
    @ManyToMany private List<Access> accessList;
}

public class Access {
    private Integer id;
    private String name;
    @ManyToMany private List<User> userList;
}

Aber ich denke, das ist nicht möglich. Was denken Sie, ist der beste Ansatz, um Zugriff auf diese Tabellen in der PPV und navigieren Sie durch Sie?

  • Tatsächlich, dies ist nicht eine M:M. Wie Sie speichern, die ein Benutzer oder Access-Reihe ist Teil von zwei Gruppen zugreifen? Der einzige Weg, das zu erreichen wäre, duplizieren die anderen Spalten (außer dem PK) und in diesem Fall, aus der Sicht des design, Sie sind verschiedene Entitäten. Stattdessen, was Sie haben, ist, zwei voneinander unabhängige 1:M Beziehungen.
InformationsquelleAutor sinuhepop | 2011-03-23
Schreibe einen Kommentar