2010-10-27 11 views
7

Sto ottenendo il seguente eccezione:query denominata non nota - Annotazioni e Hibernate

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

Entity classe intestazione:

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

Nella hibernate.cfg.xml:

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

E in una classe di test:

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

Ho avuto questo funzionamento senza annotazioni (ad esempio: con la mappatura in un file di mappatura) ma sembra più intuitivo utilizzare semplicemente le annotazioni JPA per dichiarare mappature - ma non riesco a farlo funzionare.

Cosa sto facendo di sbagliato qui? Quello che sto cercando di fare è anche possibile? Sembra che non sia l'unico a trovarlo, vedi: here.

Sto utilizzando Hibernate 3.5.6-FINAL FWIW.

TIA

+1

Ho provato da solo il tuo campione e funziona perfettamente. Prova a rimuovere da hibernate.cfg.xml dopo averlo dichiarato in AnnotationConfiguration –

+0

ho appena provato e non ha funzionato. – javamonkey79

risposta

4

Il problema era che stavo usando la classe @Entity sbagliata. Quando ho usato:

org.hibernate.annotations.Entity 

Avrei avuto i problemi di cui sopra. Tuttavia, una volta passato a:

javax.persistence.Entity 

Funziona!

+0

Grazie per aver postato la tua risposta! – DhafirNz

Problemi correlati