【问题标题】:Fetch primary key generated by sequence using jdbctemplate / jdbc for Hana db使用 jdbctemplate / jdbc for Hana db 获取序列生成的主键
【发布时间】:2017-04-07 05:53:26
【问题描述】:

我们正在尝试在 hana db 中插入记录,因此我们目前正在使用 jdbc 模板和密钥持有者来保存数据并检索新生成的列 id。这适用于 postgress 但不适用于 hana。

query ="SELECT CURRENT_IDENTITY_VALUE() FROM \"HALOSYS\".\"HaloTestDemo\"";  
resultSet =  stmt.executeQuery(query);

上面的语句给出了当前的标识值,但这不适合我们想要使用 jdbc 模板的上下文。 请给我解决这个问题的想法。 如果我们添加preparedstatement生成的键,我会得到以下异常

com.sap.db.jdbc.exceptions.jdbc40.SQLFeatureNotSupportedException: Method prepareStatement( String, int )() of Connection is not supported.

【问题讨论】:

  • 您想获取插入新行时生成的键吗?
  • 是的,我想要生成的最新ID。
  • com.sap.db.jdbc.exceptions.jdbc40.SQLFeatureNotSupportedException:不支持Connection的方法prepareStatement(String, int)()。

标签: java mysql jdbc hana


【解决方案1】:

尝试from DUMMY 代替表名,并在与插入相同的会话中执行此操作。如果你使用连接池,那就更难了。

【讨论】:

    【解决方案2】:

    请准备您的查询语句以包含插入记录,并从同一张表中选择 CURRENT_IDENTITY_VALUE() 到匿名块中的一个查询语句中,如下所示:

    DO BEGIN
        INSERT INTO <TABLE_NAME> .....;
        SELECT CURRENT_IDENTITY_VALUE() FROM <TABLE_NAME>;
    END;
    

    【讨论】:

      猜你喜欢
      • 2016-09-24
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      相关资源
      最近更新 更多