比较hibernate查询结果中的空值如此简单!

hibernate查询数据库字段时报错:java.lang.NullPointerException,经检查,原来是某些字段为空值,如何处理呢?...

 

缘起: 

        hibernate查询数据库字段时报错:java.lang.NullPointerException,经检查,原来是某些字段为空值,如何处理呢?...

修改前的语句(报错):

  Session newSession = HibernateUtil.getSessionFactory().openSession();
  Transaction newTransaction = newSession.beginTransaction();

  List etlTables = newSession.createQuery("from Table ").list();
  for (Iterator iter = eTables.iterator(); iter.hasNext();) {
   ETable eTable = (ETable) iter.next();

   if    (eTable.getNumRowsCurrSource() <= 10000 ) ) {

......

 

处理后的语句(正常运行,允许空值出现):

  Session newSession = HibernateUtil.getSessionFactory().openSession();
  Transaction newTransaction = newSession.beginTransaction();
  
  List eTables = newSession.createQuery("from Table ").list();
  for (Iterator iter = eTables.iterator(); iter.hasNext();) {
   ETable eTable = (ETable) iter.next();

   if ((eTable.getNumRowsCurrSource() == null )||
   (eTable.getNumRowsCurrSource() <= 10000 ) ) {

......

关键点:

  可以直接比较一个对象和null

走过的弯路: eTable.getNumRowsCurrSource().equals(null) 等均为错误的。

 


以下是网上的一个朋友遇到的同样的问题:(http://java.vkfz.com/Topic.aspx

我用Hibernate与数据库取数据,当取得数据库的某条记录都有值的时候,一切正常,而某条为NULL值是就报错
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp.testHibernate_jsp._jspService(org.apache.jsp.testHibernate_jsp:90)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
请问有谁知道这是为什么吗?

 

我用Hibernate与数据库取数据,
当取得数据库的某条记录都有值的时候,一切正常,
而当某条记录中的某个字段值为NULL值是就报错以上错误
org.hibernate.Session s = HibernateUtil.currentSession();
String hql1 =" from Cat";
try {
Query query = s.createQuery(hql1);
List catlist = query.list();
Cat c=(Cat)catlist.get(0);
CatId cat = ((Cat)catlist.get(0)).getId();
out.println(cat.getName());
out.println("<br/>");
} catch (org.hibernate.HibernateException e) {
e.printStackTrace();
}
HibernateUtil.closeSession();

=======================

我给他的解答:

对out.println(cat.getName());进行处理:
if cat.getName() != null
then{ 打印}

--by chq
http://www.chq.name


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值