2010-10-27 8 views
7

estoy recibiendo la siguiente excepción:consulta con nombre desconocido - Anotaciones de Hibernate y

org.springframework.orm.hibernate3.HibernateSystemException: Named query not known: 

Entidad cabecera de la clase:

@Entity 
@NamedNativeQuery(callable = true, name = "_Foo_SP", query = "call _Foo()", readOnly = true, resultClass = Foo.class) 
public class Foo { 
    //...properties omitted for brevity 
} 

En el hibernate.cfg.xml:

<mapping 
     class="com.company.test.Foo" /> 

Y en una clase de prueba:

private static HibernateTemplate HIBERNATE_TEMPLATE; 

public static void main(final String[] args) { 
    HIBERNATE_TEMPLATE = 
     new HibernateTemplate(new AnnotationConfiguration().addAnnotatedClass(Foo.class).configure().buildSessionFactory()); 
    new HibernateTest().test(); 
} 

public void test() { 
    List findByNamedQuery = HIBERNATE_TEMPLATE.findByNamedQuery("_Foo_SP"); 
    for(Object object : findByNamedQuery) { 
     System.out.println(object); 
     System.out.println(object.getClass().getName()); 
    } 
} 

Lo hice funcionar sin anotaciones (por ejemplo: con la asignación en un archivo de mapeo) pero parece más intuitivo simplemente usar las anotaciones JPA para declarar mapeos, pero parece que no puedo hacer que funcione.

¿Qué estoy haciendo mal aquí? ¿Es lo que estoy tratando de hacer posible? Parece que no soy el único en encontrar esto, ver: here.

Estoy usando hibernate 3.5.6-FINAL FWIW.

TIA

+1

He intentado por mí mismo su muestra y funciona bien. Intente eliminar de hibernate.cfg.xml una vez que lo haya declarado en AnnotationConfiguration –

+0

Lo intenté y no funcionó. – javamonkey79

Respuesta

4

El problema era que yo estaba usando la clase @Entity mal. Cuando utilicé:

org.hibernate.annotations.Entity 

Me gustaría obtener los problemas anteriores. Sin embargo, una vez que cambié a:

javax.persistence.Entity 

¡Funciona!

+0

¡Gracias por publicar tu respuesta! – DhafirNz

Cuestiones relacionadas