Struts2的Action类执行Hibernate动态绑定查询报出NullPointerException
来源:互联网 发布:中国邮政网络移动app 编辑:程序博客网 时间:2024/05/29 16:14
今天在用Struts2做东西,我的意图是要做一个查询所有信息的方法,这个方法是用hibernate中的动态绑定查询条件去做的。
方法如下:
//动态查询拍卖物品
public List<Product> queryProduct(Product p,int beginnum,int pagesize){
Criteria c = se.createCriteria(Product.class);
if(p.getUserlist().getUId()!=null && !p.getUserlist().getUId().equals("")){
c.add(Restrictions.eq("userlist.UId", p.getUserlist().getUId()));
}
c.addOrder(Order.desc("PBegintime"));
c.setFirstResult((beginnum-1)* pagesize);
c.setMaxResults(pagesize);
return c.list();
}
这里面有一个动态绑定查询条件,如果不存在的条件则不加入到查询条件中,在方法
public List<Product> queryProduct(Product p,int beginnum,int pagesize)中存入Product对象(而且也存入Product中的UserList的UId属性),两个int参数,这样的话是正确的,能够正常查询。
但是如果只存入一个Product对象和两个int参数,不再Product对象中存入UserList的UId属性就会报出如下NullPointerException异常:
HTTP Status 500
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerExceptiondao.ProductDaoImpl.queryProductSize(ProductDaoImpl.java:45)action.BuyAction.accessToBuy(BuyAction.java:42)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)java.lang.reflect.Method.invoke(Unknown Source)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)filter.CharsetFilter.doFilter(CharsetFilter.java:37)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.53 logs.
个人理解:
在我们的Action类中声明一个实体对象A,如果这个实体对象A中还持有其他实体对象B(hibernate中通过对象或集合的持有表达主外键关系),而且我们对这个实体对象A中的实体对象B的相关属性去做操作,Struts2就映射并绑定了他们,就不能为空。这可能和Struts2的内在实现机制有关,因为无论是hibernate还是Struts2,这些框架的最核心就是通过映射方式去完成操作,了解内在实现会有助于我们更好的使用它们。
0 0
- Struts2的Action类执行Hibernate动态绑定查询报出NullPointerException
- struts2的Action nullpointerexception
- hibernate动态绑定查询,获取对象的private属性
- Struts2的动态Action实现
- Struts2的执行流程--案例 使用struts2+hibernate实现客户列表查询
- struts2的action执行过程模拟
- struts2的action中方法重复执行
- struts2 action执行两次的原因
- struts2中action不执行的问题
- struts2 中action执行两次的问题
- struts2 action重复执行的解决方案
- struts2中的action方法的执行顺序
- Struts2 中Action的执行结果类型
- Struts2动态代理生成action源码执行流程
- 【Struts2】(1)Struts2框架的概念、struts2的配置文件、Action类文件、Action动态处理函数
- Struts2的Action类
- struts2的Action类
- struts2 action的动态应用(DMI)
- MD5加密
- 硬件工程师面试集锦 模拟电路 数字电路 IC设计基础 单片机 信号与系统 DSP 嵌入式
- 基于Cocos2d-x3.2的虚拟摇杆实现及操控角色移动
- 获取上级ViewController
- -OC学习之内存管理与ARC
- Struts2的Action类执行Hibernate动态绑定查询报出NullPointerException
- OpenCv,对像素读取,修改,保存等操作
- w3school javascript教程:DOM教程
- iOS开发之OC语法基础(六)--可见度
- iOS 如何用post方式上传json数据
- 各个版本spring的jar包以及源码下载地址
- 海量数据面试题----分而治之/hash映射 + hash统计 + 堆/快速/归并排序
- 雷观(九):思想是一流的,方法是二流的,技能是三流的
- 回顾面向对象