代码之家  ›  专栏  ›  技术社区  ›  javamonkey79

命名查询未知-批注和休眠

  •  8
  • javamonkey79  · 技术社区  · 14 年前

    我收到以下例外情况:

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

    实体类标题:

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

    在hibernate.cfg.xml中:

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

    在测试课上:

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

    我在没有注释的情况下工作(例如:在映射文件中使用映射),但是简单地使用JPA注释来声明映射似乎更直观,但是我似乎无法使它工作。

    我在这里做错什么了?我想做的是可能的吗?似乎我不是唯一一个遇到这种情况的人,看: here

    我用的是Hibernate 3.5.6决赛。

    蒂亚

    1 回复  |  直到 14 年前
        1
  •  5
  •   javamonkey79    14 年前

    问题是我使用了错误的@entity类。当我使用时:

    org.hibernate.annotations.Entity
    

    我会得到上面的问题。但是,一旦我切换到:

    javax.persistence.Entity
    

    它起作用了!