On Fri, 9 Feb 2018, Adrian Klaver wrote:
I remember seeing it, so I went back to look at the message. Turns out you
sent it to me only. Unfortunately I am not a Java programmer so I did not
catch the error. For the record:
Ah, blast... Apologies to everyone concerned. I need to understand why
my mail reader (Alpine on Linux) insists on defaulting to the original
poster's e-mail address when I hit 'Reply' rather than the group list.
It's not doing that with any other mail list I subscribe to.
I was trying to be careful and changed the address manually for all
messages except this one.
Thanks, Adrian! I was sure that I sent it - just not to the right place
as it turns out.
"
Here is the JDBC code:
try {
conn.setAutoCommit(false);
PreparedStatement sth = null;
ResultSet rs = null;
// Insert new
sth = conn.prepareStatement(addAssetType);
sth.setString(1, name);
sth.execute();
sth = conn.prepareStatement(lastTypeId);
rs = sth.executeQuery();
if (rs.next()) {
long id = rs.getLong(1);
result.put("id", id);
result.put("name", name);
}
else {
throw new WebApplicationException(buildError(BAD_REQUEST,
"Lookup of most recent sequence failed"));
}
conn.commit();
}
catch (SQLException e) {
conn.rollback();
throw new WebApplicationException(buildError(BAD_REQUEST,
e.getMessage()));
}
Where:
private final static String addAssetType =
"INSERT INTO udm_asset_type_definition (def_name) "
+ "VALUES (?)";
private final static String lastTypeId = "SELECT currval(
pg_get_serial_sequence('udm_asset_type_definition', 'def_id'))";
Code with this exact same structure (but different SQL, obviously) is working
just fine with five other tables using sequences. The above code snippet
always produces '0' for the id. If I use the 'INSERT .. RETURNING..'
approach, it gives the right answer.
"
--