Могу ли я изменить тип идентификатора в JPA, от "int" до "long", не затрагивая данные в уже существующей таблице в БД - PullRequest
0 голосов
/ 12 июня 2018

Я использую JPA для подключения к БД, и у меня есть класс ABC.java и обозначение таблицы как ABC, в классе ABC у меня есть идентификатор как: -

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;

Теперь я хочу преобразоватьэто в: -

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;

Могу ли я изменить тип идентификатора в JPA с int до long, не затрагивая данные в уже существующей таблице в БД.Таблица имеет поле Id как Number(10).

Какую модификацию я собираюсь сделать?

1 Ответ

0 голосов
/ 12 июня 2018

Можно изменить тип атрибута, используя конвертер атрибутов аннотация.В вашем случае это будет означать расширение AttributeConverter<Long, Integer> и использование этого конвертера для вашего поля id:

@Id
@GeneratedValue(strategy = GenerationType.TABLE)
@Convert(converter = LongToIntConverter.class)
private long id;

Однако это приведет к исключению, если значение вашего идентификатора long превышает диапазон доступныхint значения (2^31 + 1).

Чтобы этого никогда не происходило, вы должны убедиться, что генерация идентификатора ограничена этим пределом.

Редактировать: Просто чтобы спросить, почему вы хотите преобразовать идентификатор в long, но сохранить схему базы данных такой же?Я не вижу преимущества в том, чтобы делать оба.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...