2010-10-27 15 views
7

otrzymuję następujący wyjątek:Nazwany kwerendy nie wiadomo - Adnotacje i Hibernate

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

Podmiot klasa nagłówek:

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

W hibernate.cfg.xml:

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

I w klasie testowej:

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

Miałem to działa bez adnotacji (np. Z mapowaniem w pliku odwzorowania), ale wydaje się bardziej intuicyjne po prostu użycie adnotacji JPA do deklarowania mapowań - ale nie mogę sprawić, żeby działało.

Co ja tu robię źle? Czy to, co próbuję zrobić, nawet możliwe? Wygląda na to, że nie jestem jedynym, który to napotkał, zobacz: here.

Używam hibernacji 3.5.6-FINAL FWIW.

TIA

+1

Próbowałem sam próbkę i działa dobrze. Spróbuj usunąć z hibernate.cfg.xml po zadeklarowaniu go w AnnotationConfiguration –

+0

Po prostu próbowałem tego i nie zadziałało. – javamonkey79

Odpowiedz

4

Problem polegał na tym, że używałem złego klasę @Entity. Kiedy użyłem:

org.hibernate.annotations.Entity 

Chciałbym uzyskać powyższe problemy. Jednak po zmianie na:

javax.persistence.Entity 

Działa!

+0

Dziękujemy za zamieszczenie odpowiedzi! – DhafirNz

Powiązane problemy