JDBI で自動生成された主キー (Long 値) を別のクラスに変換してほしい。
私のDAO:
@RegisterMapper(SystemIdMapper.class)
public interface SystemDao {
@SqlUpdate("insert into systems(device_id, user_id) values(:deviceId.value, :userId.value)")
@GetGeneratedKeys
@Mapper(SystemIdMapper.class)
SystemId insert(@BindBean("deviceId") DeviceId deviceId, @BindBean("userId") UserId userId);
}
私のマッパー:
public class SystemIdMapper implements ResultSetMapper<SystemId> {
@Override
public SystemId map(int index, ResultSet r, StatementContext ctx) {
return new SystemId(0L); //fake mapping to simplify example
}
}
コードを実行すると、 FigureItOutResultSetMapper.map(..) で NullPointerException が発生しました。
f = factory.mapperFor(rt, ctx);
f を null に設定します。したがって、私のマッパーが正しく登録されていないと思います。
@RegisterMapper および @Mapper(SystemIdMapper.class) アノテーションを使用することを除いて、私も試しました:
dbi.registerMapper(new SystemIdMapper());
しかし、まだ運がありません。