【问题标题】:how to fetch last column of the selected table using hibernate?如何使用休眠获取所选表的最后一列?
【发布时间】:2018-01-01 08:15:31
【问题描述】:

我正在尝试按降序获取最后一列的 id。

返回最后一列的查询是

select id from(select id from challan 
    order by id desc) where ROWNUM=1;

现在我正在尝试使用休眠来做同样的事情。

public long getIdOnChallanTable() {
        session = sessionFactory.openSession();
        trans = session.beginTransaction();

        Query<Object[]> query = session.createNativeQuery("select id 
from(select id from challan order by id desc) where ROWNUM=1;");

        Long value = 0L;
        List<Object[]> list = query.getResultList();
        for ( Object lst : list){
            Object[] objects =(Object[]) lst;
           value=(Long)(objects[0]);
        }
        return value;

    }

错误是:

2017-07-26 12:37:36 [http-nio-7080-exec-1] WARN :: SQL Error: 911, SQLState: 22019
2017-07-26 12:37:36 [http-nio-7080-exec-1] ERROR:: ORA-00911: invalid character

update error javax.persistence.PersistenceException: 
org.hibernate.exception.SQLGrammarException: could not extract ResultSet

【问题讨论】:

  • 可能是问题 "from(" - 请在 from 和 ( 之间留出空格 ';' 不是必需的
  • `最后一列`是什么意思
  • 我正在尝试获取在插入时自动递增的 id。所以我想获取 id 的最后/最大列值。

标签: java hibernate spring-mvc oracle11g


【解决方案1】:

查询末尾不需要分号,请使用适当的空格。在 FROM 子句中,子查询和 FROM 关键字之间没有空格。

注意:不要忘记在最后提交/回滚事务并处理异常。我希望这只是向我们展示问题的草图,而不是来自真实世界应用程序的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多