繁体   English   中英

无法使用Hibernate解决JPA命名查询

[英]JPA named query cannot be resolved with Hibernate

我添加了新的命名查询:

@Entity(name = "books")
@NamedQueries({
        @NamedQuery(name = "books.findByCategoryId",
                query = "SELECT DISTINCT b.* FROM books b WHERE b.categoryId =:categoryId")
})
public class Book implements Serializable {

我使用Hibernate DAO实现:

@Override
    public Set<Book> findByCategory(Long categoryId) {
        return  new LinkedHashSet<Book>( sessionFactory.getCurrentSession().
                getNamedQuery("books.findByCategoryId").
                setParameter("categoryId", categoryId).list());
    }

出于某种原因,我在IDE中看到:无法解析查询'books.findByCategoryId'。 当我启动应用程序时,我得到:

may 10, 2013 6:55:05 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /SpringWebFlow threw load() exception
org.hibernate.HibernateException: Errors in named queries: books.findByCategoryId
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:528)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1760)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1798)

休眠错误:“ Errors in named queries: books.findByCategoryId ”表示您在查询中遇到语法问题。 来自IDE的消息有点误导。 正如@Piotr指出的那样,在查询中将“ b。*”更改为“ b”。

Hibernate查询语言没有提到通配符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM