public class CollegeDaoImplTest extends TestCase { public void testCollegeDaoImpl() {
Session session = HibernateUtils.getSession();
session.beginTransaction();
Query query = session.createQuery("select c from College c");
for(int i = 0; i < query.list().size(); i++) {
College c = (College) query.list().get(i);
System.out.println(c.getCollegeName());
}
session.getTransaction().commit();
}
}
College类
/**
 * This is college entity
 * 
 * @author lpll
 * @hibernate.class table="t_college"
 */
@SuppressWarnings("unchecked")
public class College { /**
 * college unique identifier auto_increment
 * 
 * @hibernate.id generator-class="native"
 */
private int id; /**
 * college's serial number
 * 
 * @hibernate.property unique="true" not-null="true"
 */
private String collegeSerialNumber; /**
 * college's name
 * 
 * @hibernate.property
 */
private String collegeName; /**
 * college office
 * 
 * @hibernate.property
 */
private String collegePlace; /**
 * college include staff rooms
 * 
 * @hibernate.set lazy="extra" inverse="true"
 * @hibernate.key column="collegeid"
 * @hibernate.one-to-many class="oa.dao.hbm.StaffRoom"
 */
private Set staffRooms; /**
 * college include many teachers
 * 
 * @hibernate.set lazy="flash" inverse="true" 
 * @hibernate.key column="collegeid"
 * @hibernate.one-to-many class="oa.dao.hbm.Teacher"
 */
private Set teachers; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getCollegeSerialNumber() {
return collegeSerialNumber;
} public void setCollegeSerialNumber(String collegeSerialNumber) {
this.collegeSerialNumber = collegeSerialNumber;
} public String getCollegeName() {
return collegeName;
} public void setCollegeName(String collegeName) {
this.collegeName = collegeName;
} public String getCollegePlace() {
return collegePlace;
} public void setCollegePlace(String collegePlace) {
this.collegePlace = collegePlace;
} public Set getStaffRooms() {
return staffRooms;
} public void setStaffRooms(Set staffRooms) {
this.staffRooms = staffRooms;
} public Set getTeachers() {
return teachers;
} public void setTeachers(Set teachers) {
this.teachers = teachers;
}
}
执行上面的测试程序会暴空指针异常
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.engine.EntityUniqueKey.<init>(EntityUniqueKey.java:44)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
at org.hibernate.loader.Loader.getRow(Loader.java:1206)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1994)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716)
at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454)
at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:797)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:241)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
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.dao.impl.CollegeDaoImplTest.testCollegeDaoImpl(CollegeDaoImplTest.java:20)
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 junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
但是其他的类就可以这样查询的,就这个类不行,配置文件也没问题,昨晚还可以的,就是今天不行了。

解决方案 »

  1.   

    hql 查询语句写错了 
    "from College as c" 
      

  2.   

    for(int i = 0; i < query.list().size(); i++) {
                College c = (College) query.list().get(i);
                System.out.println(c.getCollegeName());
            }你怎么写要查多少次啊,换个写法试试吧~每次query.list()就查一下如果有n条记录你要查n+1次。
      

  3.   

    public class CollegeDaoImplTest extends TestCase {    public void testCollegeDaoImpl() {
            Session session = HibernateUtils.getSession();
            session.beginTransaction();
            Query query = session.createQuery("from College ");  //
            List list=query.list();
            for(int i = 0; i < list.size(); i++) {
                College c = (College) list().get(i);
                System.out.println(c.getCollegeName());            
            }
            session.getTransaction().commit();
        }
    }
      

  4.   


    public class CollegeDaoImplTest extends TestCase {    public void testCollegeDaoImpl() {
            Session session = HibernateUtils.getSession();
            Query query = session.createQuery("from College");
            System.out.println(query.list().size());
        }
    }
      

  5.   

    那些都不是主要的,表中也有数据,主要是会报这种异常
    严重: Servlet.service() for servlet jsp 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.engine.EntityUniqueKey.<init>(EntityUniqueKey.java:44)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404)
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1308)
    at org.hibernate.loader.Loader.getRow(Loader.java:1206)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
    at org.hibernate.loader.Loader.doQuery(Loader.java:701)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3044)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:395)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:98)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
    at org.hibernate.impl.SessionImpl.immediateLoad(SessionImpl.java:836)
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:66)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
    at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
    at oa.dao.hbm.StaffRoom$$EnhancerByCGLIB$$65968924.getStaffRoomName(<generated>)
    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 javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:118)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
    at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:925)
    at org.apache.jsp.admin.user.userIndex_jsp._jspService(userIndex_jsp.java:471)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at oa.filter.CharacterFilter.doFilter(CharacterFilter.java:30)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    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)
    其他的类都可以,就是跟有关College的类就会出现这种异常
      

  6.   

    是配置的问题的,正常情况是可能做到级联保存,但查询会出问题,里面是多对一的问题,我只知道问题出在这里,但没好的方法解决,也许是Hibernate一个足的地方吧!