Java Hibernate上的空指针';s createQuery()

Java Hibernate上的空指针';s createQuery(),java,hibernate,Java,Hibernate,当我尝试使用createQuery()运行HQL查询时,会发生一个空指针异常,我正在努力找出它的根源 运行查询的代码非常简单。最初,我调用了一个命名查询,但只是为了使事情变得更简单并消除任何复杂性,我正在这样做(springwildlife是包,而Species是类/实体): (顺便说一句:我也尝试过使用和不使用包名。我还尝试过做一个更简单的“fromSpringWildlife.Species”查询) 我创建了一个XML映射(species.hbm.XML),如下所示: 有人知道发生了什么事吗

当我尝试使用createQuery()运行HQL查询时,会发生一个空指针异常,我正在努力找出它的根源

运行查询的代码非常简单。最初,我调用了一个命名查询,但只是为了使事情变得更简单并消除任何复杂性,我正在这样做(springwildlife是包,而Species是类/实体):

(顺便说一句:我也尝试过使用和不使用包名。我还尝试过做一个更简单的“fromSpringWildlife.Species”查询)

我创建了一个XML映射(species.hbm.XML),如下所示:

有人知道发生了什么事吗?我花了很多时间试图找到它,但我遇到了麻烦

(我不确定它是否相关,但以防万一,我将使用Resin作为我的服务器,IntelliJ作为我的IDE)

这是堆栈跟踪(SpeciesFactory.java中的第68行是对createQuery的调用):

[11-06-02 11:19:26.726]{http://*:8080-2}org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是java.lang.NullPointerException 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) 位于org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:119) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:96) 位于com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) 位于com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) 位于com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95) 位于com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:287) 位于com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:792) 位于com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730) 位于com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689) 在com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669)上 位于com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617) 位于com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104) 在com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98) 在com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81) 在com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67)上 位于com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164) 位于com.caucho.env.thread.ResinThread.run(ResinThread.java:130) 原因:java.lang.NullPointerException 在springwildlife.SpeciesFactory.getSpeciesLister(SpeciesFactory.java:68) 位于springwildlife.LifelistController.HandlerRequestInternal(LifelistController.java:26) 位于org.springframework.web.servlet.mvc.AbstractController.HandlerRequest(AbstractController.java:153) 位于org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 位于org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 位于org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 位于org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) ... 还有18个
由于
NullPointerException
被抛出到带有
createQuery()
的行中,唯一可能的原因是
session
null
在我的情况下,session对象是有效的,但我仍然得到了
NullPointerException
。 原来是我的HQL中的一个错误(
selecttcompany fromtcompany c..
而不是
selectc fromtcompany c..
)。
因此,如果会话有效,您可以检查您的HQL…

如果堆栈跟踪的前几行不只是指向该行代码,那么还可以发布堆栈跟踪的前几行代码。既然您使用注释来标记实体类,为什么要使用
hibernate.cfg.xml
?Matt,这是事后考虑的结果。。。。。当我最初偶然发现这个问题时,注释并不存在。为了清晰起见,我在帖子中删除了它们。Michael和Steve,我发布了stacktrace。那么,
springwildlife.SpeciesFactory.getSpeciesLister(SpeciesFactory.java:68)
?不完全正确,正如Gregor B.Rosenauer所说,HQL中可能有错误。可能是HQL语法问题。
Query q = session.createQuery("SELECT s FROM springwildlife.Species s");
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class name="springwildlife.Species" table="species">
      <id name="id" type="java.lang.Long" column="id" >
          <generator class="native">
              <param name="sequence">species_id_seq</param>
          </generator>

  </id>

  <!-- in the actual file I have one these for each item I want to be mapped -->

  <property name="propertyFromClass" type="java.lang.String">
   <column name="sql_table_column_name" />
  </property>

</hibernate-mapping>
package springwildlife;

public class Species
{
    // properties here

    public Species()
    {
    }

    // sets, gets, etc.

}
[11-06-02 11:19:26.726] {http://*:8080-2} org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) at javax.servlet.http.HttpServlet.service(HttpServlet.java:119) at javax.servlet.http.HttpServlet.service(HttpServlet.java:96) at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:156) at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:95) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:287) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:792) at com.caucho.network.listen.TcpSocketLink.dispatchRequest(TcpSocketLink.java:730) at com.caucho.network.listen.TcpSocketLink.handleRequest(TcpSocketLink.java:689) at com.caucho.network.listen.TcpSocketLink.handleRequestsImpl(TcpSocketLink.java:669) at com.caucho.network.listen.TcpSocketLink.handleRequests(TcpSocketLink.java:617) at com.caucho.network.listen.AcceptTask.doTask(AcceptTask.java:104) at com.caucho.network.listen.ConnectionReadTask.runThread(ConnectionReadTask.java:98) at com.caucho.network.listen.ConnectionReadTask.run(ConnectionReadTask.java:81) at com.caucho.network.listen.AcceptTask.run(AcceptTask.java:67) at com.caucho.env.thread.ResinThread.runTasks(ResinThread.java:164) at com.caucho.env.thread.ResinThread.run(ResinThread.java:130) Caused by: java.lang.NullPointerException at springwildlife.SpeciesFactory.getSpeciesLister(SpeciesFactory.java:68) at springwildlife.LifelistController.handleRequestInternal(LifelistController.java:26) at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) ... 18 more