Как установить в JPA @Version отмеченное поле в явное значение - PullRequest
0 голосов
/ 17 апреля 2020

Имея класс сущности:

@Entity
class Foo {

    @Id
    Long id;

    @Version
    java.time.Instant ts;
}

Мне нужно сохранить его с явным значением поля ts в БД. Однако, если я устанавливаю значение ts явно, оно автоматически перезаписывается JPA.

Я видел решение для обновления, однако оно не работает для меня, так как оно мне нужно уже при вставке: Можно ли отключить приращение версии Hibernate для конкретного обновления?

Я не могу удалить @Version, поскольку он входит в родительский класс моей сущности.

Более того, Я не могу отключить поведение в целом. Требуется только для указанного c варианта использования.

1 Ответ

1 голос
/ 17 апреля 2020

В соответствии с документацией hibernate :

Вашему приложению запрещено изменять номер версии, установленный Hibernate. Для искусственного увеличения номера версии, см. документацию для проверки свойств LockModeType.OPTIMISTIC_FORCE_INCREMENT или LockModeType.PESSIMISTIC_FORCE_INCREMENT в справочной документации Hibernate Entity Manager.

Если номер версии создается базой данных, например, триггером, используйте аннотацию @org.hibernate.annotations.Generated(GenerationTime.ALWAYS) на атрибут версии.

...