// ========================================================================
// 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.actor.service.domain;
import javax.persistence.Access;
import javax.persistence.AccessType;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import zeroth.framework.enterprise.domain.AbstractVersionable;
/**
* 組織
* @author nilcy
*/
@Entity
@Access(AccessType.FIELD)
@Table(name = "organ", uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }) })
@Cacheable(true)
public class Organ extends AbstractVersionable<Organ> {
/** 製品番号 */
private static final long serialVersionUID = 4009731357822225905L;
/** 親組織 */
@ManyToOne(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id", nullable = true, insertable = true, updatable = true)
private Organ parent;
/** 組織名 */
@Column(name = "name", nullable = false, insertable = true, updatable = true)
private String name;
/** 階層 */
@Column(name = "level", nullable = false, insertable = true, updatable = true)
private Long level;
/** 建制順 */
@Column(name = "administrative_order", nullable = false, insertable = true, updatable = true)
private Long order;
/**
* {@link #parent} の取得
* @return {@link #parent}
*/
public Organ getParent() {
return parent;
}
/**
* {@link #parent} の設定
* @param aParent {@link #parent}
*/
public void setParent(final Organ aParent) {
parent = aParent;
}
/**
* {@link #name} の取得
* @return {@link #name}
*/
public String getName() {
return name;
}
/**
* {@link #name} の設定
* @param aName {@link #name}
*/
public void setName(final String aName) {
name = aName;
}
/**
* {@link #level} の取得
* @return {@link #level}
*/
public Long getLevel() {
return level;
}
/**
* {@link #level} の設定
* @param aLevel {@link #level}
*/
public void setLevel(final Long aLevel) {
level = aLevel;
}
/**
* {@link #order} の取得
* @return {@link #order}
*/
public Long getOrder() {
return order;
}
/**
* {@link #order} の設定
* @param aOrder {@link #order}
*/
public void setOrder(final Long aOrder) {
order = aOrder;
}
}