Ok, först tack till Mikko för att du ledde mig till svaret. Jag ville bara posta ett svar som kan vara direkt till hjälp för någon annan som kan vara i den position jag var i. Detta är också baserat på ett Eureka-ögonblick så det kanske inte är tekniskt korrekt men så här ser jag det.
Det stora problemet jag står inför var att jag i MySQL kunde se överbryggningsbordet som ett individuellt bord! (förlåt att jag inte kan lägga upp en bild av mitt EER-diagram men jag verkar inte ha tillräckligt med privilegier för tillfället) Så jag antog att Java också skulle se bryggtabellen som en tabell! Det gör det väl inte. Den överbryggningstabellen existerar inte riktigt i Java som en konventionell tabell, den representeras i själva verket av den motstående tabellsamlingstypen som du associerar med den.
Det enklaste sättet att se det för mig var att helt glömma överbryggningstabellen och koncentrera sig på de två "riktiga" tabellerna och associera data i dessa. Följande kod är INTE bästa praxis eftersom jag helt enkelt ställer in role_id men det går bra bara för att visa min poäng.
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);
Hoppas det hjälper någon annan som kämpar med många till många relationer.
(OBS. Jag har redigerat den ursprungliga frågekoden för att använda en lista istället för en samling för enkelhets skull, men du kan lika gärna använda vilken annan typ som helst som passar dina behov.)