日期:2014-05-20  浏览次数:20863 次

hirbernate分页出错
数据库中的是sqlserver2000
Java code
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());
        }

这是写的测试
Java code
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);去掉的话就不会报错,但数据就是从第一条开始取的

------解决方案--------------------
sqlserver2000的数据库名、表名和数据都和oracle一样么 要是一样的话看看sqlserver2000的方言 可能翻译sqlserver2000的生气了出错了