Hibernate问题,请大侠么帮忙看看,着急中!

Mrwhr 2010-03-11 08:28:29
shopmessage和food
是一对多关系

测试代码如下:
其中Java类为:
public List ShowShop() throws Exception {
// TODO Auto-generated method stub
Session session=null;
Transaction tx=null;
List shoplist=null;
try
{
SessionFactory sf=HibernateFactory.getSessionFactory();
session=sf.openSession();
tx=session.beginTransaction();
String hql="from ShopMessage";
Query query=session.createQuery(hql);
shoplist=query.list();
tx.commit();
}
catch(Exception e)
{
tx.rollback();
System.out.println("数据库读取数据错误"+e.getMessage());
}
finally
{
//session.close();
}

return shoplist;
}

}


调用方法servlet为:
try
{
//获得结构对象
IShopMessage ism=BusinessFactory.getShopMessage();
//调用方法,返回shoplist
List shoplist=ism.ShowShop();
for(int i=0;i<shoplist.size();i++)
{
ShopMessage sm=(ShopMessage)shoplist.get(i);
System.out.println(sm.getId());
System.out.println(sm.getName());

Set set = null;
set=sm.getFood();


Iterator it = set.iterator();
// while(it.hasNext())
//{
//Food food = (Food)it.next();
//System.out.println(food.getId());
//System.out.println(food.getName());
// System.out.println(food.getPrice());
// System.out.println("++++++++++++++++++++++++++++++++"+food.getName());
//out.println("++++++++++书名+++++++++++"+book.getBname());


// }
}



当执行到Iterator it = set.iterator();这步的时候就会报错,报错是什么无效的索引符引起,后面有报错的信息,当注释掉Iterator it = set.iterator();这句话以及以下的句子后,就不会报错,正常打印出数据了,这是为什么,哪位解释一下,以前我这样用过,不会有错的啊


报错如下:20:09:52,824 DEBUG DefaultInitializeCollectionEventListener:64 - initializing collection [city.uit.value.ShopMessage.food#1001]
20:09:52,824 DEBUG DefaultInitializeCollectionEventListener:70 - checking second-level cache
20:09:52,824 DEBUG DefaultInitializeCollectionEventListener:82 - collection not cached
20:09:52,829 DEBUG Loader:2011 - loading collection: [city.uit.value.ShopMessage.food#1001]
20:09:52,829 DEBUG AbstractBatcher:410 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
20:09:52,829 DEBUG ConnectionManager:444 - opening JDBC connection
20:09:52,829 DEBUG SQL:111 - select food0_.ID as ID1_, food0_.fid as fid1_, food0_.fid as fid0_0_, food0_.Name as Name0_0_, food0_.Price as Price0_0_, food0_.URL as URL0_0_, food0_.State as State0_0_, food0_.ID as ID0_0_ from food food0_ where food0_.ID=?
Hibernate: select food0_.ID as ID1_, food0_.fid as fid1_, food0_.fid as fid0_0_, food0_.Name as Name0_0_, food0_.Price as Price0_0_, food0_.URL as URL0_0_, food0_.State as State0_0_, food0_.ID as ID0_0_ from food food0_ where food0_.ID=?
20:09:52,829 DEBUG AbstractBatcher:513 - preparing statement
20:09:52,829 DEBUG IntegerType:151 - binding '1001' to parameter: 1
20:09:52,829 DEBUG AbstractBatcher:426 - about to open ResultSet (open ResultSets: 0, globally: 0)
20:09:52,829 DEBUG Loader:1078 - result set contains (possibly empty) collection: [city.uit.value.ShopMessage.food#1001]
20:09:52,829 DEBUG LoadContexts:191 - constructing collection load context for result set [org.apache.tomcat.dbcp.dbcp.DelegatingResultSet@82254d]
20:09:52,834 DEBUG CollectionLoadContext:113 - starting attempt to find loading collection [[city.uit.value.ShopMessage.food#1001]]
20:09:52,834 DEBUG CollectionLoadContext:126 - collection not yet initialized; initializing
20:09:52,839 DEBUG Loader:717 - processing result set
20:09:52,839 DEBUG Loader:722 - result set row: 0
20:09:52,844 DEBUG IntegerType:193 - returning '1' as column: fid0_0_
20:09:52,844 DEBUG Loader:1197 - result row: EntityKey[city.uit.value.Food#1]
20:09:52,844 DEBUG Loader:1379 - Initializing object from ResultSet: [city.uit.value.Food#1]
20:09:52,844 DEBUG AbstractEntityPersister:2049 - Hydrating entity: [city.uit.value.Food#1]
20:09:52,844 DEBUG StringType:193 - returning '拉面' as column: Name0_0_
20:09:52,844 DEBUG FloatType:193 - returning '5.0' as column: Price0_0_
20:09:52,844 DEBUG StringType:193 - returning 'www.163.com' as column: URL0_0_
20:09:52,844 DEBUG StringType:193 - returning '有' as column: State0_0_
20:09:52,844 DEBUG IntegerType:193 - returning '1001' as column: ID0_0_
20:09:52,844 INFO IntegerType:203 - could not read column value from result set: ID1_; [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
20:09:52,849 DEBUG AbstractBatcher:433 - about to close ResultSet (open ResultSets: 1, globally: 1)
20:09:52,849 DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
20:09:52,849 DEBUG AbstractBatcher:562 - closing statement
20:09:52,849 DEBUG ConnectionManager:427 - aggressively releasing JDBC connection
20:09:52,849 DEBUG ConnectionManager:464 - releasing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]
20:09:52,854 DEBUG JDBCExceptionReporter:92 - could not initialize a collection: [city.uit.value.ShopMessage.food#1001] [select food0_.ID as ID1_, food0_.fid as fid1_, food0_.fid as fid0_0_, food0_.Name as Name0_0_, food0_.Price as Price0_0_, food0_.URL as URL0_0_, food0_.State as State0_0_, food0_.ID as ID0_0_ from food food0_ where food0_.ID=?]
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3811)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5638)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:583)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:601)
at org.apache.tomcat.dbcp.dbcp.DelegatingResultSet.getInt(DelegatingResultSet.java:237)
at org.hibernate.type.IntegerType.get(IntegerType.java:51)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173)
at org.hibernate.persister.collection.AbstractCollectionPersister.readKey(AbstractCollectionPersister.java:756)
at org.hibernate.loader.Loader.readCollectionElement(Loader.java:998)
at org.hibernate.loader.Loader.readCollectionElements(Loader.java:669)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:614)
at org.hibernate.loader.Loader.doQuery(Loader.java:724)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadCollection(Loader.java:2019)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:59)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:587)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1744)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:366)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
at city.uit.action.ShowShopMessage.doPost(ShowShopMessage.java:37)
at city.uit.action.ShowShopMessage.doGet(ShowShopMessage.java:17)
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 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(Thread.java:619)
20:09:52,859 WARN JDBCExceptionReporter:100 - SQL Error: 0, SQLState: S1002
20:09:52,859 ERROR JDBCExceptionReporter:101 - [Microsoft][ODBC SQL Server Driver]Invalid Descriptor Index
错误could not initialize a collection: [city.uit.value.ShopMessage.food#1001]
...全文
236 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧