嗨我在Postgres中有一個表,比如email_messages。它是分區的,所以無論使用我的java應用程序進行插入操作,都不會影響主表,因爲數據實際上正在插入到子表中。這是問題,我想獲得一個自動生成的列值(比如email_message_id,它是一個很大的串行類型)。 Postgres將它返回爲null,因爲在主表上沒有插入操作。對於oracle,我使用GeneratedKeyHolder來獲取該值。但我無法對postgres中的分區表執行相同的操作。請幫助我。在分區表中插入時獲取生成的鍵值
下面是我們用於甲骨文
public void createAndFetchPKImpl(final Entity pEntity,
final String pStatementId, final String pPKColumnName) {
final SqlParameterSource parameterSource =
new BeanPropertySqlParameterSource(pEntity);
final String[] columnNames = new String[]{"email_message_id"};
final KeyHolder keyHolder = new GeneratedKeyHolder();
final int numberOfRowsEffected = mNamedParameterJdbcTemplate.update(
getStatement(pStatementId), parameterSource, keyHolder, columnNames);
pEntity.setId(ConversionUtil.getLongValue(keyHolder.getKey()));
}
「GeneratedKeyHolder」意味着你可能使用Spring,但我們不應該有猜測。詳情請。 JDBC驅動程序版本,任何更高級別的抽象如JPA/Spring,您的映射代碼等。 –
是的,我們使用的是spring-jdbc版本3.1.1。 Postgres版本是8.1 –
即使在表中發生插入操作,我也會將numberOfRowsEffected作爲零和keyHolder.getKey()作爲null。 –