Uno de los problemas que nos podemos encontrar cuando construimos las consultas es que varios desarrolladores van a trabajar en el mismo proyecto construyendo consultas. Con lo cual puede que acabemos con consultas repetidas en distintas partes del código.
Para evitar este problema podemos apoyarnos en JPA NamedQueries que nos permiten definir las consultas a nivel de clase de dominio evitando las repeticiones.
Los ejemplos a continuación estarán basado en el diagrama siguiente: