Seed
:
Создание начальной версии.
Параметры:
сеанс - сеанс, из которого исходит этот запрос. Может быть нулевым; в настоящее время это происходит только при запуске при попытке определить «несохраненное значение» сущностей.
Возвращает:
экземпляр типа
@Override
public Object
seed(SharedSessionContractImplementor session)
{
return ( (UserVersionType) userType ).seed(
session );
}
Для свойств, сопоставленных с версией или отметкой времени, оператор вставки предоставляет вам два варианта. Вы можете либо указать свойство в списке свойств, в этом случае его значение берется из соответствующих выражений выбора, либо пропустить его из списка свойств, и в этом случае используется начальное значение, определенное в org.hibernate.type.VersionType
next
:
Увеличить версию.
Параметры:
сеанс - сеанс, из которого исходит этот запрос.
current - текущая версия
Возвращает:
экземпляр типа
public Object next(Object current,
SessionImplementor session) {
return ( (UserVersionType) userType ).next( current, session );
}
Из документов:
"Операторы UPDATE по умолчанию не влияют на значения версии или значения атрибута метки времени для затронутых объектов. Однако вы можете заставить Hibernate установить значения атрибута версии или метки времени с помощью обновления с контролем версий. Это достигается добавив ключевое слово VERSIONED после ключевого слова UPDATE. Обратите внимание, однако, что это особенность Hibernate и она не будет работать переносимым способом. Пользовательские типы версий org.hibernate.usertype.UserVersionType не допускаются в связи с обновлением версионное утверждение. "
Другие документы:
Выделенный номер версии
Механизм номера версии для оптимистической блокировки обеспечивается аннотацией @Version.
Аннотация @Version
@Entity
public class Flight implements Serializable {
...
@Version
@Column(name="OPTLOCK")
public Integer getVersion() { ... }
}
Здесь свойство version сопоставляется со столбцом OPTLOCK, и менеджер сущностей использует его для обнаружения конфликтующих обновлений и предотвращения потери обновлений, которые будут перезаписаны стратегией last-commit-wins.
Столбец версии может быть любого типа, если вы определяете и реализуете соответствующий тип UserVersionType.
Вашему приложению запрещено изменять номер версии, установленный Hibernate. Чтобы искусственно увеличить номер версии, см. Документацию по свойствам LockModeType.OPTIMISTIC_FORCE_INCREMENT или LockModeType.PESSIMISTIC_FORCE_INCREMENTcheck в справочной документации Hibernate Entity Manager.
Номера версий, сгенерированные базой данных
Если номер версии генерируется базой данных, например триггером, используйте аннотацию @ org.hibernate.annotations.Generated (GenerationTime.ALWAYS).
Объявление свойства версии в hbm.xml
<version
column="version_column"
name="propertyName"
type="typename"
access="field|property|ClassName"
unsaved-value="null|negative|undefined"
generated="never|always"
insert="true|false"
node="element-name|@attribute-
name|element/@attribute|."
/>
Это все, что я могу найти из документации, которая может помочь вам понять, почему и как использовать эти методы. Дайте мне обратную связь о нерелевантных частях, из-за моего неправильного понимания вопроса, чтобы удалить его.