自動生成キーとして定義された 1 つの列を持つテーブルがあります。次のコードが実行されると、新しいキーが生成されることを期待していますが、そうではありません。1 行が挿入されますが、ResultSetps.getGeneratedKeys()
は空です。
DB2: SQLLIB_ADCL_V97FP1 を使用しています。
conn = getConnection();
conn.setAutoCommit(false);
String query =
"INSERT INTO MyTable " +
" (messe_nr, land5, variable_nr, bezeichnung_en, bezeichnung_de) " +
"VALUES (?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, fair.getFairId());
ps.setString(2, variable.getCountryCode());
ps.setInt(3, variable.getSort());
ps.setString(4, variable.getLabel_en());
ps.setString(5, variable.getLabel_de());
log.debug(query);
int count = ps.executeUpdate();
if(count == 1) {
ResultSet rs = ps.getGeneratedKeys();
if(rs.next()) {
variable.setId(rs.getBigDecimal(1).intValue());
} else {
log.error("Could not get autogen key after variable insert");
throw new AVMSException(1500);
}
rs.close();
}
log.debug("inserted " + count);
ps.close();
conn.commit();
アップデート
プロジェクトをテスト サーバーにデプロイしたところ、問題は発生しません。開発システムで何かが壊れています。私は1日か2日前にJavaアップデートをインストールしました - 1.7.0_13 - それはそのような問題を引き起こす可能性があります:-/ ?