hirbernate分页出错

lw96333 2011-05-12 12:20:43
数据库中的是sqlserver2000
Configuration con = new Configuration().configure();
SessionFactory sf = con.buildSessionFactory();
Session session = sf.openSession();
Query q = session.createQuery("from UserBean ");
q.setMaxResults(110);
q.setFirstResult(100);
List<UserBean> li = q.list();
for(UserBean ub : li) {
System.out.println(ub.getName());
}

这是写的测试
Hibernate: 
select
top 210 userbean0_.pk_id as pk1_0_,
userbean0_.f_name as f2_0_,
userbean0_.f_money as f3_0_
from
t_money userbean0_
2011-5-12 12:06:53 org.hibernate.type.NullableType nullSafeGet
信息: could not read column value from result set: pk1_0_; Invalid column name pk1_0_.
2011-5-12 12:06:53 org.hibernate.util.JDBCExceptionReporter logExceptions
警告: SQL Error: 0, SQLState: 07009
2011-5-12 12:06:53 org.hibernate.util.JDBCExceptionReporter logExceptions
严重: Invalid column name pk1_0_.
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2216)
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.lovo.text.PageText.main(PageText.java:21)
Caused by: java.sql.SQLException: Invalid column name pk1_0_.
at net.sourceforge.jtds.jdbc.JtdsResultSet.findColumn(JtdsResultSet.java:906)
at net.sourceforge.jtds.jdbc.JtdsResultSet.getInt(JtdsResultSet.java:910)
at org.hibernate.type.IntegerType.get(IntegerType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
... 8 more

这是暴的错误,如果把q.setFirstResult(100);去掉的话就不会报错,但数据就是从第一条开始取的
...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyhanhai 2012-02-20
  • 打赏
  • 举报
回复
我也遇到你这个问题了,他自己分配的列名找不到,也不知道怎么解决,求解
XULIANGJUNSILU1 2011-05-13
  • 打赏
  • 举报
回复
sqlserver2000的数据库名、表名和数据都和oracle一样么 要是一样的话看看sqlserver2000的方言 可能翻译sqlserver2000的生气了出错了
lw96333 2011-05-12
  • 打赏
  • 举报
回复
配置文件没错,加数据和普通查询都没错,就是分页查询的时候报错,加了q.setFirstResult(100);这句就出错了
yingzhuo2011 2011-05-12
  • 打赏
  • 举报
回复
最好检查一下配置文件,提示说"pk1_0_." 列名非法。
lw96333 2011-05-12
  • 打赏
  • 举报
回复
我换了个数据库运行就行啊,本来用的是sqlserver2000后面换成oracle就行了,难道是数据库的问题?
yyil80 2011-05-12
  • 打赏
  • 举报
回复
是不是 q.setFirstResult(100); 应该放在q.setMaxResults(110) 的前面啊
bawgiitx 2011-05-12
  • 打赏
  • 举报
回复
1楼说了
是t_money表的pk_id字段
查下class 和 table是不是不一致
jumpheightway 2011-05-12
  • 打赏
  • 举报
回复
不是这个问题导致的
哈哈哈3234 2011-05-12
  • 打赏
  • 举报
回复
有没有110条啊!lz加油

67,513

社区成员

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

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