我遇到了hibernate命名查询的问题。
我的实体:
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;
}
}
当我执行query.list()
时,我总是得到一个NullPointerException,因为我从sessionfactory获得的查询是null。
(getSession()
返回import org.hibernate.SessionFactory
)
有人看到错误吗?
谢谢!
答案 0 :(得分:0)
检查日志,您必须在某处记录错误,因为查询无效。 select *
是SQL查询,而不是JPQL(或HQL)查询。它应该是select p from Person p
。
答案 1 :(得分:0)
我认为您正在使用 HQL ,如果是,则语法中存在错误。如下所示,
query = "select p from Person p"
。