用的是 Hibernate 的本地查询 createsqlquery
select flight.status status1,oper.status status2 
from APY_FLIGHTINFO flight 
left join APY_OPERATIONLIST oper on flight.recordid=oper.recordid 
where flight.recordid='5' order by flight.recordid
[09/15 14:15:49] [DEBUG] Loader: result row: 
[09/15 14:15:49] [INFO] CharacterType: could not read column value from result set: STATUS; Column 'STATUS' not found.
[09/15 14:15:49] [DEBUG] JDBCExceptionReporter: could not read next row of results [select flight.status status1,oper.status status2 from APY_FLIGHTINFO flight left join APY_OPERATIONLIST oper on flight.recordid=oper.recordid where flight.recordid='5' order by flight.recordid]
java.sql.SQLException: Column 'STATUS' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1093)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5488)
at org.hibernate.type.CharacterType.get(CharacterType.java:24)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:189)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.extract(CustomLoader.java:474)
at org.hibernate.loader.custom.CustomLoader$ResultRowProcessor.buildResultRow(CustomLoader.java:420)
at org.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:317)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:606)
at org.hibernate.loader.Loader.loadSingleRow(Loader.java:268)
at org.hibernate.impl.ScrollableResultsImpl.prepareCurrentRow(ScrollableResultsImpl.java:231)

解决方案 »

  1.   


    select flight.status status1,oper.status status2 ...要么就是这个查询结果,Hibernate无法包装成对象!
      

  2.   

    列 肯定是有的,2楼是什么意思啊,不能用 
    Query query = session.createSQLQuery(strSQL);
    result=query.list();
    来查询?
      

  3.   

    sql语句写错了。
    select flight.status status1,oper.status status2 
    from APY_FLIGHTINFO flight 
    left join APY_OPERATIONLIST oper on flight.recordid=oper.recordid 
    where flight.recordid='5' order by flight.recordidflight 表中没有status 列。
      

  4.   

    确实有,是不是MYSQL本身的问题呢?
      

  5.   


    String hql = "select flight.status AS 'status1',oper.status AS 'status2' from APY_FLIGHTINFO AS flight left join "+
     "APY_OPERATIONLIST AS oper on flight.recordid=oper.recordid where flight.recordid='5' order by flight.recordid";

    Session session = getSession();
    PaginatedList pageList = new PaginatedList();
    try
    {
    Query query = session.createSQLQuery(hql); int row = 0;
    ScrollableResults sr = query.scroll();
    sr.last();
    if (sr.getRowNumber() > 0)
    row = sr.getRowNumber() + 1; pageList.setPageTotal((int) Math.ceil((double) row
    / (double) pageSize));
    query.setFirstResult(pageSize * (pageNumber - 1));
    query.setMaxResults(pageSize);
    pageList.setPageSize(pageSize);
    pageList.setPageNum(pageNumber);
    pageList.setStartRownum(pageSize * (pageNumber - 1));
    pageList.setEndRownum((pageList.getStartRownum() + pageSize) - 1);
    pageList.setRowTotal(row);

    List<FlightAppElementsModel> list = new ArrayList<FlightAppElementsModel>();
    Iterator<?> results = query.list().iterator();
    ......
      

  6.   

    left join 可能是这个问题啊,你查一下left join 以后是不是status这一列被过滤了呢