Resulta que tengo alumnos y cursos. Un alumno puede inscribirse a varios cursos y un curso tiene varios alumnos, asi que mi base de datos tiene tres tablas:
Alumnos: id, nombre Cursos: id, nombre Alumnos_Cursos: id_Alumno, id_Curso Una simple relacion many to many, tres tablas desde el punto de vista relacional, dos clases desde POO. Ahora bien, resulta que ademas tengo que almacenar la fecha en que el alumno se inscribio al curso, a simple vista el lugar indicado para guardar este dato me parece que es la tabla Alumnos_Cursos, con lo cual me quedaria asi: Alumnos: id, nombre Cursos: id, nombre Alumnos_Cursos: id_Alumno, id_Curso, fecha_inscripcion Ahora desde el punto de vista POO no me queda mas remedio que tener tres clases, una para el alumno, una para el curso y otra para RelacionCursoAlumno, con lo cual un objeto alumno tiene una coleccion de RelacionCursoAlumno, un curso tambien tiene una de estas colecciones y una RelacionCursoAlumno tiene adentro un Alumno y un Curso. Necesito saber todos los alumnos de un curso con sus fechas de inscripcion y tambien conocer todos los cursos de un alumno con sus fechas de inscripcion, es por eso que necesito estas relaciones inversas. Todo esto lo voy a implementar con java utilizando JPA/Hibernate, hasta ahora lo hice funcionar pero tuve que agregar un dato extra en la tabla Alumnos_Cursos, ya que como una RelacionCursoALumno es una entidad tiene que tener su id, asi que tuve que agregar un campo id: Alumnos_Cursos: id, id_Alumno, id_Curso, fecha_inscripcion El tema es que este campo id esta de mas ya que id_Alumno union id_Curso forman una clave primaria (seria un error que un alumno este inscripto dos veces en el mismo curso). La pregunta es, como hago para mapear una clave compuesta en JPA en este caso? En todos los ejemplos que encuentro hay que crear una clase especifica para la clave primaria compuesta, pero pero entre ensuciar mi modelo de objetos y ensuciar mi base de datos prefiero ensuciar mi base de datos, cual es la mejor manera que se les ocurre para implementar esto en java con JPA? Especificamente pregunto como hacer el mapeo de la clave primaria de la clase RelacionCursoAlumno. _________________________________________________________________ ¿Querés saber cómo va a estar el clima mañana? Ingresá ahora a MSN http://tiempo.ar.msn.com/
_______________________________________________ Lista de correo Programacion. [email protected] http://listas.fi.uba.ar/mailman/listinfo/programacion
