【问题标题】:Named query not known - Annotations & Hibernate命名查询未知 - 注释和休眠
【发布时间】:2010-11-03 09:14:44
【问题描述】:

我收到以下异常:

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

我正在使用休眠 3.5.6-FINAL FWIW。

TIA

【问题讨论】:

  • 我自己试过你的样品,效果很好。在 AnnotationConfiguration 中声明后,尝试从 hibernate.cfg.xml 中删除
  • 我刚试了,没用。

标签: java hibernate


【解决方案1】:

问题是我使用了错误的@Entity 类。我用的时候:

org.hibernate.annotations.Entity

我会遇到上述问题。但是,一旦我切换到:

javax.persistence.Entity

有效!

【讨论】:

  • 感谢您发布答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
相关资源
最近更新 更多