SQLQuery query =session.createSQLQuery(sql);为空

thkyop 2012-04-01 01:44:56
public List<Program> getUnCheckProgram(Long userId) {
String sql="select * from program where pid not in (select pid from t_user_program where userId like ?)";
SQLQuery query =session.createSQLQuery(sql);
query.addEntity(Program.class);
List<Program> programList=query.list();
return programList;
}
调试执行到SQLQuery query =session.createSQLQuery(sql);的时候就执行不下去了 页面报这句话空指针,sql语句在数据库中执行是能查到数据的。求各位大神帮忙,是否我写法有错,本人菜鸟级人物。
...全文
1287 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
seebefore2 2012-04-11
  • 打赏
  • 举报
回复
应该是createSQLQuery 不支持not in,我也碰到这样的问题了。
thkyop 2012-04-01
  • 打赏
  • 举报
回复
真抱歉 这么简单的问题浪费了大家这么长时间 我基础比较差 很多不怎么用的东西都忘了 现在解决了 谢谢各位
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 的回复:]

或者你们直接帮我解决这个问题 目的是一样的

现有2张表(user,program)多对多关系,user表中有programSet集合字段,program表中有userSet集合字段 ,中间表t_user_program(userId,pid) 现在给了一个userId 我现在能得到与这个userId对应的program集合,以及所有的program集合 怎么获取剩下那部分的program集……
[/Quote]

list的差集,你不会吗?
linfssay 2012-04-01
  • 打赏
  • 举报
回复
最简单的方法就是你用datasource 里面的配置, 重新得到session
如果能得到说明是你注入的问题看看jdbcTemplate 有拿到没有, 不然就是你配置的问题
如何得到session不用多说吧
thkyop 2012-04-01
  • 打赏
  • 举报
回复
或者你们直接帮我解决这个问题 目的是一样的

现有2张表(user,program)多对多关系,user表中有programSet集合字段,program表中有userSet集合字段 ,中间表t_user_program(userId,pid) 现在给了一个userId 我现在能得到与这个userId对应的program集合,以及所有的program集合 怎么获取剩下那部分的program集合
thkyop 2012-04-01
  • 打赏
  • 举报
回复
tomcat 没有报错 只是页面上报的错
这是页面的
java.lang.NullPointerException
cn.njsuccess.train.dao.impl.ProgramDAOImpl.getUnCheckProgram(ProgramDAOImpl.java:76)
cn.njsuccess.train.biz.impl.ProgramBizImpl.getUnCheckProgram(ProgramBizImpl.java:53)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
$Proxy19.getUnCheckProgram(Unknown Source)
cn.njsuccess.train.actions.ProgramAction.getUnCheckPro(ProgramAction.java:84)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
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)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
tt986101dpc 2012-04-01
  • 打赏
  • 举报
回复
是啊是啊,把异常信息给贴出来,
未来纪元 2012-04-01
  • 打赏
  • 举报
回复
直接把所有报错信息贴出来吧
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 的回复:]

以上方法都用过了 值也赋了 断点测试一直是执行到这句话就不往下执行了 SQL语句在数据库中执行是没问题的 应该是我的session问题
[/Quote]

那你知道是什么为空不?

你是执行到这句就卡住了还是执行这句就报空指针?

如果是卡住,就是sql语句问题,如果是空指针,就是dataSource要么配置有问题,要么没有注入成功
thkyop 2012-04-01
  • 打赏
  • 举报
回复
以上方法都用过了 值也赋了 断点测试一直是执行到这句话就不往下执行了 SQL语句在数据库中执行是没问题的 应该是我的session问题
tt986101dpc 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
1、session为空 ------dataSource为空 ---------你的配置文件有问题


顺着这个,你查一下。
不知道你的session如何获取,你的session注入有问题。
[/Quote]
嗯 session肯定为空,可是session为啥为空,主要是sql语句的问题,或许不到值,那注入session里肯定为空。
未来纪元 2012-04-01
  • 打赏
  • 举报
回复
public List<Program> getUnCheckProgram(Long userId) {
String sql="select * from program where pid not in (select pid from t_user_program where userId like ?)";
SQLQuery sqlQuery=session.createSQLQuery(sql);
Query query=sqlQuery.addEntity(Program.class);
query.setParameter(0,userId);
List<Program> programList=query.list();
return programList;
}

legu1 2012-04-01
  • 打赏
  • 举报
回复
你先用查询分析器里执行一下你这句话有没有数据select * from program where pid not in (select pid from t_user_program where userId like ?,没问题再加断点调试,看看你的sessioon是否为空
tt986101dpc 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 12 楼 的回复:
String sql="select * from program where pid not in (select pid from t_user_program where userId like ?)";
这sql语句的? 你下面没有赋值 也没有在语句中传值。怎能不为空呢。
一种是在下面赋值 另一种写法如下:
String sql="select * fro……
[/Quote]
String sql="select * from program where pid not in (select pid from t_user_program where userId like '"+userId+"')";
是不是要放假了,心也兴奋,竟然老写错
kosk2010 2012-04-01
  • 打赏
  • 举报
回复
query.setParameter(....) 你没设置?的值吧
未来纪元 2012-04-01
  • 打赏
  • 举报
回复
query实例的对象类型一直是SQLQuery,在这段代码中应该有问题
tt986101dpc 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
String sql="select * from program where pid not in (select pid from t_user_program where userId like ?)";
这sql语句的? 你下面没有赋值 也没有在语句中传值。怎能不为空呢。
一种是在下面赋值 另一种写法如下:
String sql="select * from program wher……
[/Quote]
public List<Program> getUnCheckProgram(Long userId) {
String sql="select * from program where pid not in (select pid from t_user_program where userId like '"+like+"')";
SQLQuery query =session.createSQLQuery(sql);
query.addEntity(Program.class);
List<Program> programList=query.list();
return programList;
}
咳咳。。那个我写错了。
主要是在于你sql语句的问题,sql没有查询出值 那SQLQuery query =session.createSQLQuery(sql);
这句肯定会抛空。
未来纪元 2012-04-01
  • 打赏
  • 举报
回复
应该是要把SQLQuery在addEntity时转化成Query对象,然后再setParameter,然后再得到list,不然应该还会有问题,query实例的对象一直没变
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
1、session为空 ------dataSource为空 ---------你的配置文件有问题


顺着这个,你查一下。
不知道你的session如何获取,你的session注入有问题。
tt986101dpc 2012-04-01
  • 打赏
  • 举报
回复
String sql="select * from program where pid not in (select pid from t_user_program where userId like ?)";
这sql语句的? 你下面没有赋值 也没有在语句中传值。怎能不为空呢。
一种是在下面赋值 另一种写法如下:
String sql="select * from program where pid not in (select pid from t_user_program where userId like '+"userId"+')";
加载更多回复(10)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧