Нулевой указатель на createQuery () в Hibernate - PullRequest
2 голосов
/ 02 июня 2011

Я изо всех сил пытаюсь добраться до сути исключения нулевого указателя, которое происходит, когда я пытаюсь выполнить запрос HQL с createQuery ().

Код для выполнения запроса довольно прост.Первоначально у меня был именованный запрос, который я вызывал, но для упрощения и устранения любых сложностей, которые я делаю (Springwildlife - это пакет, а Species - это класс / сущность):

Query q = session.createQuery("SELECT s FROM springwildlife.Species s");

(Кстати: я также попробовал это с именем пакета и без него. И я также попытался выполнить более простой запрос «FROM springwildlife.Species»)

Я создал отображение XML (виды.hbm.xml) примерно так:

<?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>

В моем файле hibernate.cfg.xml я отображаю отображение следующим образом:

Мой класс / сущность выглядитвот так:

package springwildlife;

public class Species
{
    // properties here

    public Species()
    {
    }

    // sets, gets, etc.

}

Кто-нибудь имеет представление о том, что происходит?Я потратил много времени, пытаясь отследить его, и я в тупике.

(Я не уверен, что это актуально, но на всякий случай я использую Resin в качестве сервера и IntelliJкак моя IDE)

Это трассировка стека (строка 68 в SpeciesFactory.java - это вызов createQuery):

[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

Ответы [ 2 ]

13 голосов
/ 07 марта 2012

В моем случае объект Session был действителен, но я все еще получил NullPointerException. Оказалось, ошибка в моем HQL (SELECT TCompany FROM TCompany c... вместо SELECT c FROM TCompany c...). Так что если сессия действительна, вы можете проверить свой HQL ...

3 голосов
/ 02 июня 2011

Поскольку NullPointerException выбрасывается в строке с createQuery(), единственная возможная причина в том, что session это null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...