¿Cómo se decide en el que las clases de entidad para poner anotaciones JPA NamedQuery?

StackOverflow https://stackoverflow.com/questions/2009779

  •  18-09-2019
  •  | 
  •  

Pregunta

Decir que tengo un cliente - CustomerOrder uno-a-muchos relación bidireccional con el CustomerOrder que contiene el valor total de cada pedido

.

Si tuviera una consulta para encontrar el valor total de todos los pedidos de un cliente en particular:

select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer

¿Importa en que clase de entidad este se anota? ¿Por qué poner en una o la otra?

¿Fue útil?

Solución

  

¿Importa en que clase de entidad este se anota?

Desde un punto de vista técnico, no importa como se va a utilizar el name de un @NamedQuery llamarlo.

  

¿Por qué poner en una o la otra?

Sin embargo, desde un punto de "lógica" de vista, poniendo el @NamedQuery donde está "naturalmente" pertenece sin duda facilitar el mantenimiento. En su ejemplo, yo pondría la consulta en la entidad CustomerOrder porque la consulta es sobre la búsqueda de CustomerOrder, esto es sólo donde uno esperaría encontrar que si tuviera que buscar.

Otros consejos

No importa. El principio general es ponerlo donde debe estar lógicamente. En su caso - que sería mejor que sea en CustomerOrder

Póngalos en los archivos de mapeo XML que debe ser declarada en el persistence.xml. Ver este gran enlace: arjan -tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpa

Las porciones de consultas no 'naturalmente' pertenecer a la entidad (y aún tiene que modificar el código de entidad, si se les puso en su lugar, cada vez que se necesita una nueva consulta).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top