使用jdbctemplate / jdbc为Hana db获取序列生成的主键

时间:2016-11-23 09:42:32

标签: java mysql jdbc hana

我们正在尝试在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.

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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