严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:112)
at org.hibernate.type.AbstractType.getHashCode(AbstractType.java:120)
at org.hibernate.engine.EntityUniqueKey.generateHashCode(EntityUniqueKey.java:63)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at oa.util.AbstractPagerManager.getPageModel(AbstractPagerManager.java:58)
at oa.util.AbstractPagerManager.getPageModel(AbstractPagerManager.java:28)
at oa.util.AbstractPagerManager.getPageModel(AbstractPagerManager.java:20)
at oa.dao.impl.CollegeDaoImpl.searchCollege(CollegeDaoImpl.java:85)
at oa.web.service.impl.CollegManagerImpl.searchCollege(CollegManagerImpl.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy6.searchCollege(Unknown Source)
at oa.web.struts.actions.CollegeAction.unspecified(CollegeAction.java:39)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:249)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at oa.filter.OffsetAndPageSizeFilter.doFilter(OffsetAndPageSizeFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)AbstractPagerManager代码:
import java.util.ArrayList;
import java.util.List;import oa.SystemContext;import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;/**
 * page schema
 * @author lpll
 *
 */
@SuppressWarnings("unchecked")
public class AbstractPagerManager extends HibernateDaoSupport{

public PageModel getPageModel(String hql){
return getPageModel(hql, null);
}
public PageModel getPageModel(String hql,Object param){
return getPageModel(hql, new Object[]{param});
}
public PageModel getPageModel(String hql,Object[] params){
return getPageModel(hql, params,SystemContext.getOffset(), SystemContext.getPageSize());
}
public PageModel getPageModel(String hql,int offset,int pagesize){
return getPageModel(hql,null, offset, pagesize);
}
public PageModel getPageModel(String hql,Object param,int offset,int pagesize){
return getPageModel(hql, new Object[]{param}, offset, pagesize);
}
public PageModel getPageModel(String hql,Object[] params,int offset,int pagesize){
//获取记录总数
String countHql = getCountQuery(hql);
Query query = getSession().createQuery(countHql);
if(params != null && params.length > 0){
for(int i=0; i<params.length; i++){
query.setParameter(i, params[i]);
}
}
int total = ((Long)query.uniqueResult()).intValue();

//获取结果集
query = getSession().createQuery(hql);
if(params != null && params.length > 0){
for(int i=0; i<params.length; i++){
query.setParameter(i, params[i]);
}
}
query.setFirstResult(offset);
query.setMaxResults(pagesize);
List datas = new ArrayList();
if(query.list() != null) {
for(int i = 0; i < query.list().size(); i++) {
datas.add(query.list().get(i));
}
}

//返回PageModel
PageModel pm = new PageModel();
pm.setContent(datas);
pm.setTotalRecords(total);
return pm;
}

/**
 * 根据HQL语句,获得查询总记录数的HQL语句
 * 如:
 * select ... from Organization o where o.parent is null
 * 经过转换,可以得到:
 * select count(*) from Organziation o where o.parent is null
 * @param hql
 * @return
 */
private String getCountQuery(String hql){
int index = hql.indexOf("from");
if(index != -1){
return "select count(*) " + hql.substring(index);
}
throw new RuntimeException("无效的HQL查询语句【"+hql+"】");
}}  searchCollege方法:
/**
 * search college by name or serial num
 * 
 * @param nameOrSerialNum
 *            the college of name or serial num
 * @return PageModel the pageModel
 */
public PageModel searchCollege(String nameOrSerialNum) {
if (nameOrSerialNum == null || nameOrSerialNum.equals("")) {
return getPageModel("select c from College c");
} else {
return getPageModel(
"from College c where c.collegeName like ? "
+ "or c.collegeSerialNumber like ? "
+ "or c.collegePlace like ?", new Object[] {
"%" + nameOrSerialNum + "%",
"%" + nameOrSerialNum + "%",
"%" + nameOrSerialNum + "%" });
}
}昨晚睡觉前还一切正常,但是今天不知道为什么早上起来打开电脑就成这样了,昨晚到现在代码都没改过

解决方案 »

  1.   

    In general, it is recommended to use
    {@link #getHibernateTemplate() HibernateTemplate}, either with
    the provided convenience operations or with a custom
    {@link org.springframework.orm.hibernate3.HibernateCallback} that
    provides you with a Session to work on. HibernateTemplate will care
    for all resource management and for proper exception conversion.把getsession改成getHibernateTemplate()试试看