Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2011, 03:58
CaSTy
 
Fecha de Ingreso: diciembre-2010
Ubicación: Madrid
Mensajes: 42
Antigüedad: 14 años, 4 meses
Puntos: 1
Hibernate (Relacion entre tablas)

Tengo una aplicación web funcionando en donde he usado Struts, Hibernate y Spring.

Hasta ahora no había relaciones entre las tablas de mi base de datos pero he decidido incorporar una relación Muchos-a-Uno (Many-to-One) a mi aplicación. Estoy usando anotaciones y he encontrado ejemplos donde he visto como se hace y bueno, la verdad es que creo que está bien. La cosa es:


Tengo una tabla Categoria cuyos campos son:
Id (Int)
Nombre (String)

Tengo una tabla PuntoLimpio cuyos campos son:
Id (Int)
Provincia (String)
Localidad (String)
Direccion (String)
Etc..

Tengo una tabla PuntoLimpioTieneCategoria cuyos campos son:
Id (Int)
puntolimpio_id (Int) (es una FK hacia la id de la tabla PuntoLimpio)
categoría_id (Int) (es una FK hacia la id de la tabla Categoria)


La cuestión es que tengo un formulario en donde hago una búsqueda de puntos limpios y uno de los parámetros nuevos de mi búsqueda es por Categoria. (Hasta ahora funciona bien buscando solo por provincia y localidad)

Entonces hasta ahora yo tenía implementado en mi clase PuntoLimpioDaoHibernate una búsqueda solo por provincia y por localidad pero ahora quiero añadir otro campo que busque también por categoría.

La sentencia en SQL se como es:

SELECT DISTINCT p.* FROM puntolimpio as p, categoria as c, puntolimpio_tiene_categoria as pc WHERE p.id = pc.puntolimpio_id AND c.id = pc.categoria_id AND c.id = 4;
Nota: En esta caso estoy buscando puntos limpios con categoria = 4.

Pero no se como hacer que desde la clase PuntoLimpioDaoHibernate de mi aplicación llame a las tablas de Categoria y PuntoLimpioTieneCategoria.

No sé si se me ha entendido pero si tenéis alguna duda os lo vuelvo a explicar.

Por favor a ver si alguien me puede echar una mano ya que llevo tiempo leyendo sobre esto y no sé cómo encauzarlo. Si necesitan que postee algo de código, también, no hay problema ;)

Gracias por adelantado!

Samuel.