insertした時のidを取得する その2

一応こんなこともできるというご紹介で、前回は1レコードだけinsertしたIDを取得する処理でしたが、今回は複数レコード対応です。
insert select で複数レコード登録した際に、それらのIDがListで返ってきます。

Dao017.java
public interface Dao018 {
	@SqlUpdate("CREATE TABLE IF NOT EXISTS table004 (name text)")
	void createTable();

	@SqlUpdate("insert into table004 (name) values (:name)")
	int insert(@Bind("name") String name);

	@SqlUpdate("insert into table003(name) select name from table004")
	@GetGeneratedKeys
	List<Integer> insertSelect();
}
Sample027.java
public static void main(String[] args) {
	String url = "jdbc:postgresql://192.168.52.128/jdbi";
	DBI dbi = new DBI(url, "jdbi_user", "jdbi_pass");
	Dao018 dao = dbi.onDemand(Dao018.class);

	dao.createTable();

	dao.insert("name1");
	dao.insert("name2");

	// Daoに指定するのはダメみたい
	try {
		List<Integer> ids = dao.insertSelect(); // JDBI 2.59 ではここで例外
		for( Integer id : ids )
		{
			System.out.println("id = " + id);
		}
	} catch(Throwable e) {
		e.printStackTrace();
	}

	// でも、Update オブジェクトから executeAndReturnGeneratedKeys を呼べばOK
	dbi.withHandle(new HandleCallback<Void>() {
		@Override
		public Void withHandle(Handle h) throws Exception
		{
			String sql = "insert into table003(name) select name from table004";
			Update updateStatement = h.createStatement(sql);
			List<Integer> ids = updateStatement.executeAndReturnGeneratedKeys(IntegerMapper.FIRST).list();
			for( Integer id : ids )
			{
				System.out.println("id = " + id);
			}

			return null;
		}
	});
}

ソースを見てもらえればわかる通り、ObjectAPI形式の GetGeneratedKeys アノテーションではダメみたいです。
でも、JDBIのソース(V 2.59)を見ると、

@Override
public <ContainerType> ContainerType list(Class<ContainerType> containerType)
{
//    return containerFactoryRegistry.lookup(containerType).create(Arrays.asList(list()));
    throw new UnsupportedOperationException("Not Yet Implemented!");
}

となってまして、対応する気はあるみたいです。