/** * Result producer that returns a {@link ResultBearing} over the statement-generated keys. * * @param generatedKeyColumnNames optional list of generated key column names. * @return ResultBearing of generated keys * @see PreparedStatement#getGeneratedKeys() */ public static ResultProducer<ResultBearing> returningGeneratedKeys(String... generatedKeyColumnNames) { return (supplier, ctx) -> { ctx.setReturningGeneratedKeys(true); if (generatedKeyColumnNames.length > 0) { ctx.setGeneratedKeysColumnNames(generatedKeyColumnNames); } return ResultBearing.of(getGeneratedKeys(supplier, ctx), ctx); }; }
@Test public void testShouldNotBeAbleToCombineConcurrentUpdatableAndGeneratedKeys() { final StatementContext context = StatementContextAccess.createContext(); context.setConcurrentUpdatable(true); assertThatThrownBy(() -> context.setReturningGeneratedKeys(true)).isInstanceOf(IllegalArgumentException.class); }
@Test public void testShouldNotBeAbleToCombineGeneratedKeysAndConcurrentUpdatable() { final StatementContext context = StatementContextAccess.createContext(); context.setReturningGeneratedKeys(true); assertThatThrownBy(() -> context.setConcurrentUpdatable(true)).isInstanceOf(IllegalArgumentException.class); }
/** * Result producer that returns a {@link ResultBearing} over the statement-generated keys. * * @param generatedKeyColumnNames optional list of generated key column names. * @return ResultBearing of generated keys * @see PreparedStatement#getGeneratedKeys() */ public static ResultProducer<ResultBearing> returningGeneratedKeys(String... generatedKeyColumnNames) { return (supplier, ctx) -> { ctx.setReturningGeneratedKeys(true); if (generatedKeyColumnNames.length > 0) { ctx.setGeneratedKeysColumnNames(generatedKeyColumnNames); } return ResultBearing.of(getGeneratedKeys(supplier, ctx), ctx); }; }