无法将二进制(16)类型的UUID添加到SQL中

时间:2018-05-21 16:25:22

标签: java mysql hex byte uuid

通过完全遵循this问题和解决方案,我仍然无法解决问题。我仍然得到"列数' 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会在DB中成功写入。

我试图将ByteBuffer bb大小保持为8,但后来我得到了;

  

BufferOverflowException

我错过了什么?

0 个答案:

没有答案