这是某个游戏引擎的技能树,比较简单,算是心得吧。先记下再说。
废话不说上代码,注解有问题可以搜搜。
package com.xxx.ge.skill.model;
import java.util.List;
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.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.xxx.common.BaseEntity;
/**
* 技能树
*
* @author ZhangPeng
*
*/
@SuppressWarnings("serial")
@Entity
@Table(name = "s_skill_tree", schema = "ge")
public class SkillTree extends BaseEntity {
private SkillTree parent; // 必要技能(父节点)
private List<SkillTree> children; // 衍生技能(子节点)
private Skill skill; // 技能
private Integer level; // 必要等级
public SkillTree() {
}
public SkillTree(SkillTree parent) {
setData(parent, null);
}
public SkillTree(SkillTree parent, List<SkillTree> children) {
setData(parent, children);
}
@ManyToOne
@JoinColumn(name = "parent_id", nullable = true)
public SkillTree getParent() {
return parent;
}
public void setParent(SkillTree parent) {
this.parent = parent;
}
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER)
@JoinColumn(name="parent_id")
public List<SkillTree> getChildren() {
return children;
}
public void setChildren(List<SkillTree> children) {
this.children = children;
}
@ManyToOne
@JoinColumn(name = "skill_id", nullable = false)
public Skill getSkill() {
return skill;
}
public void setSkill(Skill skill) {
this.skill = skill;
}
@Column(name = "level", scale = 10)
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
@Transient
public boolean isRoot() {
return (this.parent == null);
}
@Transient
public boolean isLeaf() {
return (this.children == null);
}
private void setData(SkillTree parent, List<SkillTree> children) {
this.parent = parent;
this.children = children;
}
}
生出来的DDL:
-- Table "s_skill_tree" DDL
CREATE TABLE `s_skill_tree` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`level` int(11) DEFAULT NULL,
`skill_id` bigint(20) NOT NULL,
`parent_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK157CCC18A344D99E` (`skill_id`),
KEY `FK157CCC183AF245E3` (`parent_id`),
CONSTRAINT `FK157CCC183AF245E3` FOREIGN KEY (`parent_id`) REFERENCES `s_skill_tree` (`id`),
CONSTRAINT `FK157CCC18A344D99E` FOREIGN KEY (`skill_id`) REFERENCES `s_skill` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
本打算做成英雄无敌五里面的那个技能轮来了,不过是在懒得想,再说自己毕竟不是设计人员哈。先凑合了。
分享到:
相关推荐
jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联映射jpa 关联...
单向一对一 双向一对一 单向一对多 双向一对多 双向多对一 单向多对多 双向多对多
JPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAPJPA JAP
JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射JPA学习笔记-EJB-04JPA关联映射总结 JPA JPA关联映射
JPA映射关系,多种映射关系的图解,适合EJB初学者,对JPA映射关系的了解.
使用jpa映射关联和继承
springJpa单标递归树形结构
JPA视频_映射单向多对一的关联关系 · 13. JPA视频_映射单向一对多的关联关系 · 14. JPA视频_映射双向一对多的关联关系 · 15. JPA视频_映射双向一对一的关联关系 · 16. JPA视频_映射双向多对多的关联关系 ...
05_JPA详解_日期_枚举等字段类型的JPA映射.zip 05_JPA详解_日期_枚举等字段类型的JPA映射.zip
hibernate的中关系映射分为一对一、一对多、多对一、多对多,其中有单双向之分。而一对一还有主键和外键区分。一共是九种。分别用xml配置文件和annotation实现。annotation的版本没有写测试程序,见谅。
05_传智播客JPA详解_日期_枚举等字段类型的JPA映射
通过Oracle提供的jar包,实现jpa方式对sdo_geometry的快速支持。
JPA实体映射对时间字段的处理,使用的JPA比较流行
jpa映射关系详解[参照].pdf
映射单向多对一、单向一对多、双向一对一、双向多对一和双向多对多关联关系的具体实现
学习hibernate必读,包括JPA2新特征和JPA2映射的神秘之旅两个pdf。
Spring Data JPA中文文档1.4.3
JPA视频教程_使用jpa映射单个实体对象
刚学完了hibernate和ejb,自己又自学了下jpa,看了黎活明老师的视频,自己做了个多对多的例子,希望可以对你学习有所帮助,有心人可以联系我QQ770256061!
Spring Data JPA中文文档[1.4.3].zip