sql >> Base de Datos >  >> RDS >> Mysql

JPA persiste muchos a muchos

Ok, primero gracias a Mikko por llevarme a la respuesta. Solo quería publicar una respuesta que podría ser directamente útil para cualquier otra persona que pudiera estar en la posición en la que yo estaba. Además, esto se basa en un momento Eureka, por lo que puede que no sea técnicamente correcto, pero así es como lo veo.

¡El gran problema al que me enfrenté fue que en MySQL podía ver la tabla puente como una tabla individual! (Lo siento, no puedo publicar una imagen de mi diagrama EER, pero parece que no tengo suficientes privilegios en este momento). ¡Así que asumí que Java también vería la tabla puente como una tabla! Bueno, no lo hace. Esa tabla puente no existe realmente en Java como una tabla convencional; de hecho, está representada por el tipo de colección de tablas opuestas que asocia con ella.

La forma más fácil de verlo para mí fue olvidarme por completo de la tabla puente y concentrarme en las dos tablas 'reales' y asociar los datos en ellas. El siguiente código NO es la mejor práctica, ya que simplemente estoy configurando role_id, pero está bien solo para mostrar mi 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);

Espero que ayude a cualquier otra persona que esté luchando con muchas o muchas relaciones.

(Nota:he editado el código de la pregunta original para usar una lista en lugar de una colección, pero también puede usar cualquier otro tipo que se ajuste a sus necesidades).