我从数据库中通过(em.createNativeQuery(SQL).getResultList())取得数据,大致结构如下[[a,b,12],[c,d,null],[e,f,23]]由于我想从中取出a,b,12....等的值,因此将该List中的元素List.get(i)转换成了Ventor型,可是当取到List.get(1)(即第二组数据时),竟然能取到并且输出了第三个字段,结果为null。但是我想要在java中对其处理啊。比如,如果它为null的话,我就给我需要赋值的字段赋值为""。可是我现在不知道该如何比较它啊,我试过List.get(1).get(2).equals(null)(就是null),我知道这样的方法,及List.get(1).get(2)==null;都是不可取的,我该怎么办啊?大侠,很急啊!!
package com;import java.util.Collections;
import java.util.List;import javax.ejb.Local;
import javax.ejb.Stateless;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;@Stateless(name = "SessionEAO", mappedName = "TEST_1-SessionEJB")
@Local
public class SessionEAOBean implements SessionEAOLocal {
@PersistenceContext(unitName="Project1")
private EntityManager em; public SessionEAOBean() {
} public Object mergeEntity(Object entity) {
return em.merge(entity);
} public Object persistEntity(Object entity) {
em.persist(entity);
return entity;
} /** <code>select o from Departments o</code> */
public List<Departments> queryDepartmentsFindAll() {
return em.createNamedQuery("Departments.findAll").getResultList();
} public void removeDepartments(Departments departments) {
departments = em.find(Departments.class, departments.getDepartmentId());
em.remove(departments);
} public List queryTable() {
Query query;
query = em.createNativeQuery("select department_id,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID from departments order by department_id desc");
System.out.println("EAO.......");
return query.getResultList();
}
}
---------用这个调用上面的sessionbeanpackage com;import java.util.ArrayList;
import java.util.List;import java.util.StringTokenizer;import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;@Stateless(name = "SessionBF", mappedName = "TEST_1-SessionEJB")
@Local
public class SessionBFBean implements SessionBFLocal {
@PersistenceContext(unitName="Project1")
private EntityManager em; public SessionBFBean() {
System.out.println("BF....Constructor");
}
@EJB
SessionEAOLocal eao;
public List<ListBean> obtainTable(){
List<ListBean> tableList = new ArrayList<ListBean>();
List result = new ArrayList();
System.out.println("BF....Before get queryResult....");
result = eao.queryTable();--由于在得到的数据中,因为第三列有空的值,所以如果System.out.println(result);时,就会出现类似上述所说的情况。因此不知道该如何判断!!大侠啊。。T_T
for(i = 0; i < result.size(); i++){ Vector vr = Vector(result.get(i));
//-----下面四行就是赋值,我就不具体写了,就是在这里在每次赋值前要判断是否为空,不为空则按对应的数据转换,为空则用""代替并对应赋值。
lb.setDeptid(deptid);
lb.setDeptname(name);
lb.setMgrid(mgrid);
lb.setLctid(lcnid);
tableList.add(lb);
}
}---------------上面所使用的到ListBean.java,其中get和set方法都是自动生成的package com;public class ListBean {
public ListBean() {
}
private long _deptid;
private String _deptname;
private long _mgrid;
private long _lctid;
public void setDeptid(long _deptid) {
this._deptid = _deptid;
} public long getDeptid() {
return _deptid;
} public void setDeptname(String _deptname) {
this._deptname = _deptname;
} public String getDeptname() {
return _deptname;
} public void setMgrid(long _mgrid) {
this._mgrid = _mgrid;
} public long getMgrid() {
return _mgrid;
} public void setLctid(long _lctid) {
this._lctid = _lctid;
} public long getLctid() {
return _lctid;
}
}
大哥,帮帮我吧,小弟先谢过了!
if(_deptname==null){
_deptname="";
}
this._deptname = _deptname;
}
java.lang.NullPointerException
at com.SessionBFBean.obtainTable(SessionBFBean.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:15)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:30)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:126)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:114)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy103.obtainTable(Unknown Source)
at com.SessionBF_z03e9c_SessionBFLocalImpl.obtainTable(SessionBF_z03e9c_SessionBFLocalImpl.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at oracle.adf.model.binding.DCInvokeMethod.invokeMethod(DCInvokeMethod.java:563)
at oracle.adf.model.binding.DCDataControl.invokeMethod(DCDataControl.java:2119)
at oracle.adf.model.bc4j.DCJboDataControl.invokeMethod(DCJboDataControl.java:2929)
at oracle.adf.model.bean.DCBeanDataControl.invokeMethod(DCBeanDataControl.java:396)
at oracle.adf.model.binding.DCInvokeMethod.callMethod(DCInvokeMethod.java:258)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1441)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2126)
at oracle.adf.model.bean.DCBeanDataControl.invokeOperation(DCBeanDataControl.java:414)
at oracle.adf.model.adapter.AdapterDCService.invokeOperation(AdapterDCService.java:311)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:697)
at oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding.invokeMethodAction(JUMethodIteratorDef.java:174)
at oracle.jbo.uicli.binding.JUMethodIteratorDef$JUMethodIteratorBinding.executeQuery(JUMethodIteratorDef.java:377)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlRangeBinding.__setSortCriteria(FacesCtrlRangeBinding.java:254)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding$FacesModel.setSortCriteria(FacesCtrlHierBinding.java:339)
at org.apache.myfaces.trinidad.component.UIXCollection.setSortCriteria(UIXCollection.java:470)
at org.apache.myfaces.trinidad.component.UIXTable.setSortCriteria(UIXTable.java:195)
at org.apache.myfaces.trinidad.component.UIXTable.broadcast(UIXTable.java:259)
at oracle.adf.view.rich.component.UIXTable.broadcast(UIXTable.java:139)
at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:153)
at org.apache.myfaces.trinidad.component.UIXTable.broadcast(UIXTable.java:270)
at oracle.adf.view.rich.component.UIXTable.broadcast(UIXTable.java:139)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:754)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:282)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:175)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:181)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:85)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:279)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:239)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:196)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:139)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at oracle.security.jps.wls.JpsWlsFilter.doFilter(JpsWlsFilter.java:102)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:65)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(Unknown Source)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
也可以在从数据库里取值的时候通过oracle的nvl函数设定null为默认值。或通过is null,is not null进行比较。
再通过(String)List.get(1).get(2)==null进行判断。
反正前不堵就后堵。
方法二:if(null == object)~用这样地形式做判断可以有效地避免空异常错误