Ayuda con consultas en criteria

Antes que nada Saludos y gracias por la molestia de leer este post.

Resulta que tengo un inconveniente para el cual se me ocurren varias formas de resolverlo, pero quisiera que me apoyaran sobre cual es la manera correca o mas eficiente de hacerlo, el detalle es el siguiente:

tengo una tabla

 
esta tabla es algo extraña pero es para evitar crear pequeñas tablitas generales, por ejemplo ahí ya metí el catalogo de colores (id_car = 1) y el catalogo de años (id_cat = 2) ahora bien tengo otra tabla mas llamada reporte con la siguiente estructura:
 
donde id_color y id_año deben contener el valor del id_cat_valor que le corresponde.

bien ahora el problema es que tengo que mostrar esta tablita(reporte) en la pantalla debe lucir de la siguiente manera:
 
aquí se me ocurren varias maneras de hacerlo, por ejemplo la primera y la mas recomendable creo yo, es realizar consultas anidadas desde criteria, que seria el equivalente a hacer consultas con alias en SQL, o tal vez debería implementar un listener que haga el cambio del id por el valor que le corresponde, es aquí donde pido su ayuda para que me recomienden la manera correcta de hacerlo, y si es posible en dado caso de que fuese con consultas anidadas, poner un ejemplo dado que no tengo mucha experiencia en criteria.

Saludos
@FlexJRL

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Yo he usado un par de veces

Yo he usado un par de veces algo similar a esto de catalogo "generico" y en ambas ocasiones he pasado los peores momentos de mi vida. Es horrible por donde se le vea, cuando aquello crece un poco más da unos dolores de cabeza.

Quizá será por que en ambas ocasiones yo era el usuario de la tabla y no el diseñador, por que también, en ambas ocasiones, el diseñador me lo explicaba con mucho orgullo terminando con la frase "es muy fácil"

En fin.

Si aún estás a tiempo, regresa a un esquema tradicional donde haya una tabla para cada catalogo. Si ya es demasiado tarde, aún puedes hacer una vista sobre esa tabla y hacerle selects normales.

Yo entiendo que la motiviación va por ahí de la optimización, pero también es importante la usabilidad de la tabla.

Quizá no te ayudé mucho con lo del criteria ( te refieres al criteria de hibernate ?? ) pero espero que te sirva para que consideres una alternativa en el diseño de esos catalogos.

Chau!!!

( p.d. Si encuentras que necesitas una columna extra que identifica el tipo de dato... entonces huye lo más pronto posible o como decía IronMaiden ".. run to the hills!!!..." )

Totalmente de acuerdo

Concuerdo totalmente con OscarRyz, el querer tener muchas tablitas en una sola tabla es sintoma de un mal diseño, de entrada ya se le dio en la torre a la integridad referencial, el mantenimiento va a ser una pesadilla, por lo de los criteria que mencionas tambien supongo que se uso hibernate, tambien te recomiendo si aun estas a tiempo rediseñar la BD porque a la larga traera mas problemas que ventajas, total si estas usando hibernate en tres patadas sacas los entities y daos.

Imagen de Shadonwk

@OscarRyz @luiguisf,

@OscarRyz @luiguisf, concuerdo con ustedes, pero muchas veces dependemos de otras personas, en este caso así se queda por el tiempo, pero como es un sistema pequeño, no creo que tenga problemas en un futuro muy cercano, y esta puede ser una mejora para el mantenimiento, aunque de momento necesito hacerlo así, y si con criteria me refiero al lenguaje de Hibernate.

Gracias
Saludos

Usa vistas

Lo que puedes hacer, como comenta OscarRyz es usar vistas y DTOS, aunq no se si tus reportes son en pantalla o en PDF o en que formato, porque igual con un select anidado es suficiente

Imagen de Shadonwk

hola @luiguisf, sip con

hola @luiguisf, sip con select anidados resolveríamos la bronca, el detalle aquí es que no tengo mucho conocimiento de Hibernate, Criteria.

DTO

Con el creteria te meterias en mas problemas, usa DTOS