- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
一直在使用 Spring MVC 和 JPA 编写一些代码,我偶然发现了这个问题。
在尝试输出我的一个类(class)(本例中为 Student)时,我在 TypedQuery 代码行处遇到 NullPointerException
StudentDAO.java:
// Retrieves all the users:
public List<Student> getAllStudents() {
TypedQuery<Student> query = em.createQuery("SELECT s FROM Student AS s", Student.class);
return query.getResultList();
}
下面是出现的错误(编辑:抱歉正在使用另一个查询函数进行测试,将其更改为正确的错误消息)
java.lang.NullPointerException
at com.prototype.spring.StudentDAO.getAllStudents(StudentDAO.java:23)
at org.apache.jsp.WEB_002dINF.view.addStudent_jsp._jspService(org.apache.jsp.WEB_002dINF.view.addStudent_jsp:101)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
但是,当我对另一个类(本例中为 CreateSession)执行完全相同的代码时,代码输出完全没有错误。谁能帮我理解为什么会出现错误?
public List<CreateSession> getAllSessions() {
TypedQuery<CreateSession> query = em.createQuery("SELECT s FROM CreateSession AS s", CreateSession.class);
return query.getResultList();
}
(编辑2:下面是StudentDAO.java)
package com.prototype.spring;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class StudentDAO {
// Injected database connection:
@PersistenceContext private EntityManager em;
// Stores a new User:
@Transactional
public void persist(Student student) {
em.persist(student);
}
// Retrieves all the users:
@Transactional
public List<Student> getAllStudents() {
TypedQuery<Student> query = em.createQuery("SELECT s FROM Student AS s", Student.class);
return query.getResultList();
}
public List<Student> getFromQuery(String q)
{
TypedQuery<Student> query = em.createQuery(q, Student.class);
return query.getResultList();
}
}
最佳答案
我假设您的 Student
表中的 s
包含一个 null
值。由于 null
的类型为 Student
,因此它可以工作,但当您尝试调用 getResultList()
时,您会收到 NullPointerException
。
关于java - TypedQuery 给出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20322770/
我正在使用以下 JPA 查询,并且收到 java.lang.IllegalArgumentException:无法为具有多个返回异常的查询创建 TypedQuery。 TypedQuery uQuer
我正在使用以下 JPA 查询,并且收到 java.lang.IllegalArgumentException:无法为具有多个返回异常的查询创建 TypedQuery。 TypedQuery uQuer
我收到错误“无法使用请求的结果类型为具有多个返回的查询创建 TypedQuery”我尝试返回所有列值。那时应用程序挂起。我需要获取数组列表中的客户端列表。请帮忙,我是 JPA 新手。 @Overrid
我正在使用 Mockito 来模拟 Java 持久性查询的结果集: 被 mock 的代码: public void queryMethod(String name){ List result =
在 JPA 中,查询类型返回泛型类型对象,需要将其转换为指定的数据类型。我最近看到了另一个 Query 实例,它是 TypedQuery。 TypedQuery 确保 query.getSingleR
我收到错误“无法使用请求的结果类型为具有多个返回的查询创建 TypedQuery” 对于在 Glassfish 上使用 JPA 的以下查询,您知道这里出了什么问题吗?我想获取最新的某个扣款状态的扣款记
我一直在尝试使用 TypedQuery 和 Criteria Builder 构建下面的 SQL: select a.id, a.numeroAvisoPagament
一直在使用 Spring MVC 和 JPA 编写一些代码,我偶然发现了这个问题。 在尝试输出我的一个类(class)(本例中为 Student)时,我在 TypedQuery 代码行处遇到 Null
我有一个应用程序需要选择可能非常大量的行(数十万到数百万)。 当我直接针对数据库 (Oracle) 运行查询时,它会在大约 9-10 秒内返回并选择 4M 行。 当我执行与 TypedQuery 相同
我在使用 TypedQuery 接口(interface)、NamedQuery 和多对多关系创建查询时遇到问题。这是我的报告实体: @Entity @Table(name = "REPORT") @
我正在尝试学习如何在 JPQL 中使用隐式联接。我正在使用的一个示例似乎表明可以将外键引用为路径,然后可以访问外键引用的表中的属性。 用户和报表之间是 1:M 的强制关系。userId 是引用 Use
我有一个javax.persistence.TypedQuery我想直播。这是我的尝试: public static Stream stream(TypedQuery query, int batc
下面是对问题的更多、可能更好的描述: 我做了一个简单的选择查询。返回列表包含确切数量的记录/对象,就好像我在数据库中执行相同的查询一样,但问题是所有对象都相同/相同。 例如,这是数据库中的结果(我删除
是否可以将此查询编写为 TypedQuery,并让两个 Long 运行到一个内部有两个公共(public) Long 字段的对象中。 Query q = em.createQuery(
来自 Entity Framework 背景,我可以将我的 ORM 结果转换为包含完整后端模型数据子集的类。 我有一个 JAX-RS REST 服务,我通常会在其中返回类似的内容 MyEntity r
我想在 javax.persistence.TypedQuery 上设置超时。 我发现了这个简单的方法: TypedQuery query = ... ; query.setHint("javax.p
我希望在 FIQL 支持下实现分页。我在 JPA(Hibernate) 中使用 apache cxf。这是为其提供的示例 http://cxf.apache.org/docs/jax-rs-searc
当我尝试执行通用类型的 TypedQuery 时,我收到来自 Eclipse 的未经检查的类型转换警告。 我在这里使用通用的,因为在数据集中,由于查询和编辑的时间限制,每年都必须分成不同的表。表中有
假设有一个简单的 JPA 实体类,如下所示: @Entity(name="TASK") public class Task implements Serializable { /* gette
我需要知道正在数据库上执行什么查询,以便我可以检查是否可以改进它。 以下代码用于创建查询: TypedQuery orderItemTypedQuery = typedQuery.setParamet
我是一名优秀的程序员,十分优秀!