Невозможно добавить UUID типа Binary (16) в SQL - PullRequest
0 голосов
/ 21 мая 2018

Точно следуя этому вопросу и решению, я все еще не могу решить проблему.Я все еще получаю «Данные слишком длинные для столбца 'id' в строке 1"

  public static byte[] asBytes(UUID uuid) {
    ByteBuffer bb = ByteBuffer.wrap(new byte[16]);
    bb.putLong(uuid.getMostSignificantBits());
    bb.putLong(uuid.getLeastSignificantBits());
    return bb.array();
  }

  UUID id= UUID.randomUUID();
  InsertQueryBuilder runner = new InsertQueryBuilder("test_table")
        .addField("id", asBytes(id));

       return getConnection()
      .flatMap(connection -> runner.run(connection)
        .doOnTerminate(connection::close))

Из этого ответа я понял, что 16 байтов - это 32 шестнадцатеричные цифры.Поэтому, если я изменяю тип столбца на BINARY (32), то я не получаю никакой ошибки, и id успешно записывается в БД.

Я попытался сохранить размер bb ByteBuffer до 8, но затем я получил;

BufferOverflowException

Чего мне не хватает?

...