2010-10-27 5 views
7

ich die folgende Ausnahme bin immer:benannte Abfrage nicht bekannt - Anmerkungen & Hibernate

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

Entity-Klasse-Header:

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

Im hibernate.cfg.xml:

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

Und in einer Testklasse:

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()); 
    } 
} 

Ich hatte dies funktioniert ohne Anmerkungen (zB: mit dem Mapping in einer Mapping-Datei), aber es scheint intuitiver, einfach die JPA-Annotationen zu verwenden, um Mappings zu deklarieren - aber ich kann es nicht funktionieren.

Was mache ich hier falsch? Ist das, was ich versuche, überhaupt möglich? Es scheint, dass ich nicht der Einzige bin, der darauf stößt, siehe: here.

Ich verwende Hibernate 3.5.6-FINAL FWIW.

TIA

+1

Ich habe meine Probe ausprobiert und es funktioniert gut. Versuchen Sie, aus hibernate.cfg.xml zu entfernen, nachdem Sie es in der AnnotationConfiguration deklariert haben. –

+0

Ich habe das gerade versucht und es hat nicht funktioniert. – javamonkey79

Antwort

4

Das Problem war, dass ich die falsche @Entity Klasse wurde mit. Als ich verwendete:

org.hibernate.annotations.Entity 

Ich würde die oben genannten Probleme bekommen. Aber sobald ich wechselte zu:

Es funktioniert!

+0

Vielen Dank für Ihre Antwort! – DhafirNz

Verwandte Themen