package org.nutz.dao.test.meta.issue918; import java.util.List; import org.nutz.dao.entity.annotation.ColDefine; import org.nutz.dao.entity.annotation.Column; import org.nutz.dao.entity.annotation.Comment; import org.nutz.dao.entity.annotation.Default; import org.nutz.dao.entity.annotation.Id; import org.nutz.dao.entity.annotation.Index; import org.nutz.dao.entity.annotation.Readonly; import org.nutz.dao.entity.annotation.TableIndexes; /** * @author Young 树结构 http://www.cnblogs.com/yongzhi/articles/1187149.html */ @TableIndexes({ @Index(fields = { "parentId", "name"}, name = "parentId_name",unique=true), @Index(fields = { "lft", "rgt"}, name = "lft_rgt",unique=true), }) public abstract class AbstractTree<T> { //private static final long serialVersionUID = 1L; @Id private long id; @Column @ColDefine(notNull = true) @Comment("节点名称") private String name; @Column("p_id") @Comment("父节点id") private long parentId; @Column @Comment("左节点") private long lft; @Column @Comment("右节点") private long rgt; @Column @Default("1") private Integer status; private T parent; private List<T> children; @Readonly @Column private int level; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public long getParentId() { return parentId; } public void setParentId(long parentId) { this.parentId = parentId; } public long getLft() { return lft; } public void setLft(long lft) { this.lft = lft; } public long getRgt() { return rgt; } public void setRgt(long rgt) { this.rgt = rgt; } public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public T getParent() { return parent; } public void setParent(T parent) { this.parent = parent; } public List<T> getChildren() { return children; } public void setChildren(List<T> children) { this.children = children; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } }