Mysql
 sql >> Database >  >> RDS >> Mysql

L'APP persiste da molti a molti

Ok prima di tutto grazie a Mikko per avermi guidato alla risposta. Volevo solo pubblicare una risposta che potrebbe essere direttamente utile a chiunque altro che potrebbe trovarsi nella posizione in cui mi trovavo. Inoltre questo si basa su un momento Eureka, quindi potrebbe non essere tecnicamente corretto, ma è così che la vedo io.

Il grosso problema che ho dovuto affrontare era che in MySQL potevo vedere la tabella di collegamento come una tabella individuale! (scusate, non posso pubblicare un'immagine del mio diagramma EER ma al momento non mi sembra di avere abbastanza privilegi) Quindi ho pensato che anche Java avrebbe visto la tabella di collegamento come una tabella! Beh, non è così. Quella tabella di collegamento non esiste realmente in Java come tabella convenzionale, è infatti rappresentata dal tipo di raccolta di tabelle opposte che le associ.

Il modo più semplice per vederlo per me era dimenticare completamente la tabella di collegamento e concentrarmi sulle due tabelle "reali" e associare i dati in quelle. Il codice seguente NON è la migliore pratica poiché sto semplicemente impostando role_id ma va bene solo per mostrare il mio punto.

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);

Spero che questo aiuti chiunque altro stia lottando con molte o molte relazioni.

(NB. Ho modificato il codice della domanda originale per utilizzare un elenco anziché una raccolta per comodità, ma puoi anche utilizzare qualsiasi altro tipo adatto alle tue esigenze.)