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();
=======================
我给他的解答:
if cat.getName() != null
then{ 打印}
--by chq
http://www.chq.name