用Hibernate+Spring读数据库,为什么会产生下面这个异常
Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not load an entity: [com.team2.shopcart.vo.User#1]
at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1874)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
at org.hibernate.loader.entity.EntityLoader.loadByUniqueKey(EntityLoader.java:85)
at org.hibernate.persister.entity.AbstractEntityPersister.loadByUniqueKey(AbstractEntityPersister.java:1649)
at org.hibernate.type.EntityType.loadByUniqueKey(EntityType.java:608)
at org.hibernate.type.EntityType.resolve(EntityType.java:382)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:120)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
at org.hibernate.loader.Loader.doQuery(Loader.java:729)
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:3049)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
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.proxyOrLoad(DefaultLoadEventListener.java:195)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:846)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:557)
at org.hibernate.type.EntityType.resolve(EntityType.java:379)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:120)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:854)
at org.hibernate.loader.Loader.doQuery(Loader.java:729)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
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 com.team2.basedao.impl.BaseDaoImpl.findAll(BaseDaoImpl.java:135)
at com.base.test.BaseDaoImplTest.findAll(BaseDaoImplTest.java:68)
at com.base.test.BaseDaoImplTest.main(BaseDaoImplTest.java:27)
Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2796)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2827)
at com.mysql.jdbc.PreparedStatement.setInt(PreparedStatement.java:2778)
at org.hibernate.type.IntegerType.set(IntegerType.java:41)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116)
at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1707)
at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1678)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
... 37 more即使我获取一个表里的全部数据,没有参数传递,为什么还会有Parameter index out of range 
大家帮下忙,感激不尽

解决方案 »

  1.   

    Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not load an entity: [com.team2.shopcart.vo.User#1]
    也有可能是驱动问题!楼主检查一下URL是否写正确!
      

  2.   

    Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). SQL异常,SQL语句参数是否正确啊?
    仔细检查连接数据,
    最好从新生成一下实体。有可能是实体与数据库数据不匹配。
      

  3.   

    Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not load an entity: [com.team2.shopcart.vo.User#1]
    无法装载实体Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 
    sql错误出现这种情况,hbm文件出错的可能性居大,楼主检查sql,看看啥问题,修改一下映射文件试试
      

  4.   

    应该是hbm的配置文件问题,看看hbm里类的配置
    多检查几遍
      

  5.   

    这是因为hibernate在查询的时候,会将与自身有映射关系的表都查询出来,这样就可以用xxx.xxx.xxx来调用具体的对象。假设有class表和student表。
    有两个学生student1和student2和两个班级class1和class2
    class表和student表的映射关系为:
    student→class == 多对一
    表结构:class表:
    id    name
     1    class1
     2    class2
    student表:
    id    stuname    classid
     1    student1   1           //表示student1是在class1这个班级中
     2    student2   2           //表示student2是在class2这个班级中
    那么在查询的时候,如果查询student表,就可以通过student.class.name来获取class表中的name字段值。
    你的问题就出在class表中没有class2这条记录,但student表的classid有一条记录的值为2.错误的表结构:class表:
    id    name
     1    class1student表:
    id    stuname    classid
     1    student1   1           //表示student1是在class1这个班级中
     2    student2   2           //表示student2是在class2这个班级中,但是hibernate无法查找到classid=2的记录数,故会出现这个错误com.team2.shopcart.vo.User#1请查看User表,如果我没猜错,User表中应该没有ID=1的记录。
      

  6.   

    楼主应该是做删除操作了吧,但删除的不彻底。或者是手动删除了user表中的数据,而没有注意和user表有关系的表中的数据。
      

  7.   

    Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 
    如果你配置什么的都没错的话,是不是你设置参数的时候setParameter(0, param);把这个0设置成了1??
    jdbc中开始是1,hibernate中是从0开始的
      

  8.   

    bu  cuo a  .加油啊 
      

  9.   

    问题不大,关键是查看你的映射文件和配置文件中实体类的名字是否拼写有误!
    Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 
    不过对于参数个数越界,应给也是问题,只是表面你没检查出来
    还是先解决你的拼写问题吧……
      

  10.   

    你的HBM文件配置写的有问题。自己仔细看下
      

  11.   

    could not load an entity: [com.team2.shopcart.vo.User#1] 看看User.hbm路径及文件是否正确。