0

我对休眠命名查询有疑问。

我的实体:

import org.hibernate.annotations.NamedQueries;
import org.hibernate.annotations.NamedQuery;

import javax.persistence.Entity;

@NamedQueries({ @NamedQuery(name = "getAllPersons", query = "select * from person p") })
@Entity
public class Person extends Party { .... }

我的道:

import org.hibernate.Query;
import org.springframework.stereotype.Repository;

@Repository
public class DefaultPersonDao implements PersonDao{

    @Override
    @SuppressWarnings("unchecked")
    public List<Person> getAllPersons() {
        Query query = getSession().getNamedQuery("getAllPersons");
        List<Person> persons = query.list();
        return persons;
    }
}

当我这样做时,我总是得到一个 NullPointerException query.list(),因为我从 sessionfactory 获得的查询是空的。

getSession()返回一个import org.hibernate.SessionFactory

有没有人看到错误?

谢谢!

4

2 回答 2

0

检查日志,您必须在某处记录错误,因为查询无效。select *是 SQL 查询,而不是 JPQL(或 HQL)查询。应该是select p from Person p

于 2011-11-02T13:22:52.120 回答
0

我认为您正在使用HQL,如果是,那么语法中存在错误。使用如下, query = "select p from Person p".

于 2011-11-02T13:24:41.353 回答