Se puede retener las consultas en package-info.java
clase, en, por ejemplo, la raíz paquete de sus objetos de dominio. Sin embargo, debe utilizar las propias anotaciones de Hibernate @NamedQueries
y @NamedQuery
, en lugar de las de javax.persistence
.
Ejemplo package-info.java
archivo:
@org.hibernate.annotations.NamedQueries({
@org.hibernate.annotations.NamedQuery(
name = "foo.findAllUsers",
query="from Users")
})
package com.foo.domain;
Entonces, hay que añadir el paquete a su AnnotationConfiguration
. Yo uso la primavera, por lo que no es una cuestión de establecer annonatedPackages
propiedad:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="annotatedClasses">
<list>
...
</list>
</property>
<property name="annotatedPackages">
<list>
<value>com.foo.domain</value>
</list>
</property>
También se puede poner tipo de filtro y las definiciones en el mismo archivo también.
Desde mi punto de vista esto no es consultar externalización - es compilado en clase y para mí tener docenas de consultas en la clase de entidad o incluso más consultas en la clase de paquete de información-Voy a elegir entidad. mi humilde opinión, esto no es la respuesta correcta para esta pregunta, no tengo ni idea de por qué se acepta -> -1 – Betlista
1 Para mí está bien. Muestra cómo externalizar usando Java Config y XML también. Lea la pregunta antes de la votación negativa, indica claramente que no quiere tener las NamedQueries dentro de la clase. – Augusto