嗨,我在 Postgres 中有一张桌子,比如 email_messages。它是分区的,所以无论我使用我的 java 应用程序执行的插入操作都不会影响主表,因为数据实际上是插入到子表中的。这是问题所在,我想获得一个自动生成的列值(比如 email_message_id 是大序列类型的)。Postgres 将它作为 null 返回,因为没有在主表上进行插入。对于 oracle,我使用 GeneratedKeyHolder 来获取该值。但是我不能对 postgres 中的分区表做同样的事情。请帮帮我。
这是我们用于 oracle 的代码片段
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()));
}