这是某个游戏引擎的技能树,比较简单,算是心得吧。先记下再说。
废话不说上代码,注解有问题可以搜搜。
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(Java Persistence API)`是Java EE平台中的一个标准,用于管理关系数据库的对象关系映射(ORM)。在本示例中,我们将探讨如何使用Spring JPA来实现单表递归树形结构。 首先,我们需要理解递归树形结构。在...
- `@OrderBy`:在集合映射中,指定排序规则。 6. **组合**: - `@Embeddable`:定义一个可嵌入的类,其属性可以被其他实体包含。 - `@Embedded`:在实体类中嵌入一个`Embeddable`类。 - `@AttributeOverride`、...
JPA是Java平台上的ORM(Object-Relational Mapping)规范,用于处理Java对象与关系数据库之间的映射。它简化了数据库操作,开发者可以通过Java对象直接操作数据,而无需编写大量的SQL语句。在这个项目中,JPA可能与...
JPA是JavaEE中的对象关系映射(ORM)规范,用于在Java应用中处理数据库操作。它提供了一种统一的方式来映射Java对象到关系数据库表,消除了直接使用SQL语句的需要。JPA通过实体类(Entity)来表示数据库表,通过注解...
- **ORM映射元数据**:JPA允许开发者使用XML或JDK 5.0注解来定义对象与数据库表之间的映射关系。元数据描述了实体类如何对应到数据库表,使得框架可以自动将对象持久化到数据库中。 - **JPA API**:这个API提供了一...
- **@Inheritance**:用于定义继承策略,决定如何在数据库中存储继承树。 - **@DiscriminatorColumn** 和 **@DiscriminatorValue**:与继承策略配合,用于区分不同子类的实例。 #### 查询注解 - **@NamedQuery** ...
**JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用程序中处理持久性的工作。JPA通过提供对象/关系映射(ORM)工具,允许开发人员使用面向对象的编程模型来与...
在本项目中,JPA 可能用于将 Java 类(如学生信息类)映射到数据库表,简化了数据库操作,减少了对SQL的直接依赖。 2. **Struts**: Struts 是一个基于 MVC(Model-View-Controller)设计模式的Java Web框架。在这个...
本文将详细解析标题“综合JPA,spring2.5.6,dom,struts1,struts2的jar包”中涉及的关键技术,并探讨它们在实际开发中的应用。 首先,JPA(Java Persistence API)是Java平台上的一个标准,用于管理关系数据库中...
SpringMVC 3.2 是一个强大的Java web开发框架,由Spring.IO团队维护,用于构建高效、...同时,理解并掌握SpringMVC的MVC模式、ZTree的树形数据展现、JPA的ORM映射以及数据库连接配置,对提升Java Web开发能力大有裨益。
总结来说,构建Java的树形结构时,我们可以通过Hibernate结合JPA注解来映射数据库表,但也可以选择在程序中管理父子关系以增加灵活性。通过抽象基类,可以实现通用的树形结构操作,使得代码复用性更高。在实际开发中...
在Java开发中,Spring Data JPA 是一个非常重要的框架,它简化了数据库操作,并提供了ORM(对象关系映射)的功能。"春天数据JPA一对多"这个标题涉及到的是Spring Data JPA 中的一种关联关系——一对一(One-to-One)...
JPA通过ORM(对象关系映射)技术将Java对象与数据库表进行映射,简化了数据访问层的开发。 **2. 实现ORM** Spring JPA主要依赖于Hibernate、EclipseLink等JPA提供商来实现ORM。它支持注解驱动的配置,通过`@Entity`...
使用Spring Data JPA或Hibernate作为ORM(对象关系映射)工具,可以方便地与数据库进行交互,如查询用户角色和权限信息。 2. **动态树形结构**:在前端,JavaScript库如JQuery、AngularJS或React可以帮助创建动态的...
如果使用JPA(Java Persistence API),还可以添加@Entity注解以支持ORM(对象关系映射)。 3. DAO层:定义一个数据访问对象(DAO)接口,包含获取所有根节点分类、根据ID获取分类以及获取指定分类的所有子分类等...
JPA是Java平台上的一个标准,用于管理关系数据库中的对象,简化了数据库操作,通过ORM(对象关系映射)技术实现了Java对象与数据库表之间的映射。 **JPA基础** JPA的核心概念包括实体(Entity)、实体管理器...
2. **Java Persistence API (JPA)**: JPA是Java EE的一部分,它提供了一种标准的方式来处理对象-关系映射(ORM)。JPA允许开发者用Java对象来操作数据库,通过Entity、Repository和Service层进行数据的CRUD操作。 3. ...
JPA是Java平台上的标准ORM(对象关系映射)规范,它允许我们将数据库操作与业务对象关联起来,使得我们可以像操作Java对象一样操作数据库记录。 在SpringBoot中,配置JPA非常简单。只需要在`pom.xml`文件中添加对应...
JPA查询引擎可以将JPQL字符串解析成语法树,获取表达式中的实体对象-关系映射的元数据,然后生成等价的SQL。例如: ```java String jpql = "select p from Person p where p.age > " + age; Query query = ...