Какой тип данных Java подходит для обработки типа данных rowversion SqlServer? - PullRequest
0 голосов
/ 01 мая 2020

Sql Сервер имеет тип данных rowversion для использования в качестве оптимистического c параллелизма. Я столкнулся с проблемой использования в проекте Dropwizard Jdbi (написано в Java).

В настоящее время я использую приведенную ниже строку кода для преобразования типа данных сервера sql rowversion в java. Эта строка написана на DAO mapper (набор результатов преобразования базы данных mapper в java модели.)

ByteArray  version = getBytes("version")

Пожалуйста, помогите мне выяснить, как правильно обращаться с этим типом дела.

1 Ответ

0 голосов
/ 01 мая 2020

Массив байтов или длинный без знака. 8 байтов представляют собой представление с 256-кратным основанием монотонно увеличивающегося целого числа. Что идентично 64-разрядному целому числу без знака с прямым порядком байтов (он же порядок сетевых байтов).

например

use tempdb
go
drop table if exists t

create table t(id int identity, rv rowversion)

insert into t default values
insert into t default values
insert into t default values
insert into t default values


SELECT *, CAST(rv as bigint)
FROM T

вывод

id          rv                 
----------- ------------------ --------------------
1           0x000000000000085E 2142
2           0x000000000000085F 2143
3           0x0000000000000860 2144
4           0x0000000000000861 2145

(4 rows affected)
...