Как сохранить поле, в которое длинный весенний идентификатор будет конвертирован - PullRequest
0 голосов
/ 12 ноября 2018

Я перешел по этой ссылке: https://vladmihalcea.com/how-to-map-calculated-properties-with-hibernate-generated-annotation/

Вот мой исходный код:

private String firstName;

private String lastName;

private String middleName1;

private String middleName2;

private String middleName3;

private String middleName4;

private String middleName5;

@Generated( value = GenerationTime.ALWAYS )
@Column(columnDefinition =
    "AS CONCAT(" +
    "   COALESCE(firstName, ''), " +
    "   COALESCE(' ' + middleName1, ''), " +
    "   COALESCE(' ' + middleName2, ''), " +
    "   COALESCE(' ' + middleName3, ''), " +
    "   COALESCE(' ' + middleName4, ''), " +
    "   COALESCE(' ' + middleName5, ''), " +
    "   COALESCE(' ' + lastName, '') " +
    ")")
private String fullName;

Для создания этого поля fullname используются другие поля string.

То, что я хочу, это что-то другое.

У меня есть поле идентификатора автоинкремента в классе весенней загрузки:

private long id //or it can be int, does not matter

У меня есть еще одно поле, которое должно быть уникальным и буквенно-цифровым.

private String code;

Это поле будет иметь 6 буквенно-цифровых символов (верхний или нижний регистр не имеет значения).

Можно ли сохранить это поле автоматически при создании нового объекта с помощью такого метода?

Long.toString("id_field_value",36);

На самом деле, это дает:

0 -> 0
1 -> 1
10 -> A

Итак, когда будет создан первый объект, id будет 1.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Попробуйте следующие аннотации на длинном поле:

@Id   
@GeneratedValue(strategy = GenerationType.AUTO)
@SequenceGenerator(name="id_sequence", sequenceName="id_sequence", allocationSize=1)
private long id

Сохраните этот объект персистентности, используя hibernate. Убедитесь, что в вашей схеме есть последовательность с указанным именем.

Схема может быть создана:

CREATE SEQUENCE schema_name.id_sequence
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1;

Вы можете обратиться к ссылке , если вам нужна ссылка

0 голосов
/ 12 ноября 2018

Да, это возможно.

Вы можете сгенерировать свой код другим методом, который будет возвращать ваше буквенно-цифровое значение и установить для свойства code значение, возвращаемое вашим случайным методом

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