Mysql
 sql >> Baza danych >  >> RDS >> Mysql

JPA upiera się wiele do wielu

Ok, po pierwsze dzięki Mikko za doprowadzenie mnie do odpowiedzi. Chciałem tylko opublikować odpowiedź, która może być bezpośrednio pomocna dla każdego, kto może być w sytuacji, w której byłem. Jest to również oparte na momencie Eureki, więc może nie być technicznie poprawne, ale tak to widzę.

Dużym problemem, z którym się zmagam, było to, że w MySQL mogłem zobaczyć tabelę pomostową jako pojedynczą tabelę! (przepraszam, że nie mogę opublikować obrazu mojego diagramu EER, ale wydaje mi się, że w tej chwili nie mam wystarczających uprawnień) Założyłem więc, że Java również zobaczy tabelę pomostową jako tabelę! Cóż, nie. Ta tabela pomostowa tak naprawdę nie istnieje w Javie jako konwencjonalna tabela, w rzeczywistości jest reprezentowana przez typ kolekcji tabel przeciwnych, który z nią kojarzysz.

Najprostszym sposobem, aby to zobaczyć, było całkowite zapomnienie tabeli pomostowej i skoncentrowanie się na dwóch „prawdziwych” tabelach i powiązaniu w nich danych. Poniższy kod NIE jest najlepszą praktyką, ponieważ po prostu ustawiam role_id, ale wystarczy pokazać, o co mi chodzi.

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

Mam nadzieję, że pomoże to każdemu, kto zmaga się z wieloma związkami.

(Uwaga:dla ułatwienia zmodyfikowałem oryginalny kod pytania, aby użyć Listy zamiast Kolekcji, ale równie dobrze możesz użyć dowolnego innego typu, który odpowiada Twoim potrzebom.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstawianie wielu wartości do MySQL jednocześnie

  2. Używanie MySql z Entity Framework 4 i Code-First Development CTP

  3. Ile wierszy zostanie zablokowanych przez WYBIERZ... ZAMÓW WEDŁUG xxx LIMIT 1 DO AKTUALIZACJI?

  4. Usuń klucz obcy tylko, jeśli istnieje

  5. SQL:Błąd składni z przecięciem?