// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.framework.enterprise.domain;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import zeroth.framework.enterprise.shared.Versionable;
/**
* 版管理エンティティ
* <p>
* JPAが版数をもとに楽観ロックを自動的に実装する。
* </p>
* @param <E> 版管理エンティティ型
* @author nilcy
*/
@MappedSuperclass
public abstract class AbstractVersionable<E extends AbstractVersionable<E>> extends
AbstractPersistable<E> implements Versionable<BigDecimal> {
/** 識別番号 */
private static final long serialVersionUID = 3662224470361465232L;
/** 版数 */
@Version
@Column(name = "version", nullable = false, insertable = true, updatable = true)
private Long version;
/** コンストラクタ */
public AbstractVersionable() {
}
/**
* {@link #version} の取得
* @return {@link #version}
*/
@Override
public Long getVersion() {
return this.version;
}
/**
* {@link #version} の設定
* @param version {@link #version}
*/
@Override
public void setVersion(final Long version) {
this.version = version;
}
}