Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JPA bestehen viele zu viele

Ok, danke erstmal an Mikko, der mich zur Antwort geführt hat. Ich wollte nur eine Antwort posten, die für alle anderen, die sich in der Position befinden, in der ich mich befinde, direkt hilfreich sein könnte. Auch dies basiert auf einem Eureka-Moment, daher ist es möglicherweise nicht technisch korrekt, aber so sehe ich es. P>

Das große Problem, mit dem ich konfrontiert war, war, dass ich in MySQL die Bridging-Tabelle als einzelne Tabelle sehen konnte! (Entschuldigung, ich kann kein Bild meines EER-Diagramms posten, aber ich scheine im Moment nicht über genügend Berechtigungen zu verfügen.) Also nahm ich an, dass Java die Brückentabelle auch als Tabelle sehen würde! Nun, das tut es nicht. Diese Überbrückungstabelle existiert in Java nicht wirklich als herkömmliche Tabelle, sie wird tatsächlich durch den Sammlungstyp der entgegengesetzten Tabellen repräsentiert, den Sie ihr zuordnen.

Der einfachste Weg, es für mich zu sehen, war, die Brückentabelle vollständig zu vergessen und mich auf die beiden "echten" Tabellen zu konzentrieren und die Daten in diesen zu verknüpfen. Der folgende Code ist KEINE Best Practice, da ich einfach die role_id setze, aber es ist in Ordnung, nur um meinen Standpunkt zu zeigen.

List<Roles> userRoleList = new ArrayList<Roles>();

Users currentUser = new Users();
currentUser.setUserId(userId);
currentUser.setUsername(email);
currentUser.setPassword(password);

Roles userRole = new Roles();
userRole.setRoleId("2");

userRoleList.add(userRole);
currentUser.setRolesCollection(userRoleList);

getUsersFacade().create(currentUser);

Ich hoffe, das hilft allen anderen, die mit vielen zu vielen Beziehungen zu kämpfen haben.

(Hinweis:Ich habe den ursprünglichen Fragecode bearbeitet, um der Einfachheit halber eine Liste anstelle einer Sammlung zu verwenden, aber Sie können genauso gut jeden anderen Typ verwenden, der Ihren Anforderungen entspricht.)