hibernate注解映射继承关系

数据库表

用户表(User)

id username password

客户表(Customer),客户表id引用用户表id

id phone

员工表(Employee),员工表id引用用户表id

id qq

飞机表(Plane),飞机表包含客机和战斗机,客机有厕所,战斗机有武器

id type speed wc_position weapon_position

实体映射

//子类共享属性id,version
@MappedSuperclass
public abstract class IdentifiedEntity implements Serializable {
	@Id
	@GeneratedValue
	@Getter private Long id;

	@Version
	@Getter private int version;

	private void setId(Long id) { this.id = id; }
	private void setVersion(int version) { this.version = version; }
}

// User的id是在父类IdentifiedEntity中定义的
@Entity
public class User extends IdentifiedEntity {
	@Getter @Setter private String username;
	@Getter @Setter private String password;
}

//  Customer,Employee是User的子类
//  它们的id既是主键也是外键
//  它们的主键都作为外键引用User表的主键
@Entity
@PrimaryKeyJoinColumn(name = "id")
public class Customer extends User {
    @Getter @Setter private String phone;
}
@Entity
@PrimaryKeyJoinColumn(name = "id")
public class Employee extends User {
    @Getter @Setter private String qq;
}

// Plane是A370和J10的父类
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type", discriminatorType=DiscriminatorType.STRING)
public class Plane extends IdentifiedEntity{
    private String speed;
}
@Entity
@DiscriminatorValue("370")
public class A370 extends Plane{
    private String wc_position;
}
@Entity
@DiscriminatorValue("738")
public class j10 extends Plane{
    private String weapon_position;
}
时间: 2024-11-10 07:24:14

hibernate注解映射继承关系的相关文章

hibernate中的继承关系

  1.       hibernate中的继承关系   代码:   <1>.POJO类:(Person类)   package qau.edu; import java.util.Date; public class Person { //  成员变量: private int id ; private String name ; private Date date ; //  相应的getter和setter方法: public int getId() { return id; } pub

[原创]java WEB学习笔记87:Hibernate学习之路-- -映射 继承关系(subclass , joined-subclass,union-subclass )

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

hibernate 映射继承关系

实现方式一般有三种: 1. 继承关系树每个具体类对应一张表(不介绍) 2. 继承关系树的根类对应一张表 3. 继承关系树的每个类对应一张表 先介绍关系: DayEmployee和MonthEmploy是Employee的子类,并且Company和Employee是一对多关系: 具体代码如下: Company.java import java.util.HashSet; import java.util.Set; public class Company { private Integer id;

[Hibernate] 注解映射例子

Hibernate 注解(Hibernate Annotation) 是一种比较新的方式,通过在 java 简单类增加注解,来声明 java 类和数据库表的映射,作用和 xml 文件相似.hibernate 注解可以用来增强,或者替换 xml 的映射声明方式. hibernate 注解功能需要使用下面三个 jar 文件 hibernate-annotations.jar ejb3-persistence.jar hibernate-commons-annotations.jar 代码的目录结构如

Entity Framework Code First 映射继承关系

转载 http://www.th7.cn/Program/net/201301/122153.shtml Code First如何处理类之间的继承关系.Entity Framework Code First有三种处理类之间继承关系的方法,我们将逐一介绍这三种处理方法. 1.Table Per Hierarchy(TPH): 只建立一个表,把基类和子类中的所有属性都映射为表中的列. 2.Table Per Type(TPT): 为基类和每个子类建立一个表,每个与子类对应的表中只包含子类特有的属性对

Hibernate的映射组成关系

建立域模型(Java的对象模型)和关系数据模型(数据库表模型)有着不同的出发点: 域模型: 由程序代码组成, 通过细化持久化类的的粒度(就是通过把相同的属性,规划为一个类)可提高代码的可重用性, 简化编程 关系模型:在没有数据冗余的情况下, 应该尽可能减少表的数目, 简化表之间的参照关系, 以便提高数据的访问速度 Hibernate 把持久化类的属性分为两种: 值(value)类型: 没有 OID, 不能被单独持久化, 生命周期依赖于所属的持久化类的对象的生命周期 实体(entity)类型: 有

Hibernate注解映射联合主键的三种主要方式(转载)

转自:http://blog.csdn.net/robinpipi/article/details/7655388 联合主键用hibernate注解映射方式主要有三种:第一.将联合主键的字段单独放在一个类中,该类需要实现Java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id 第二.将联合主键的字段单独放在一个类中,

Hibernate注解映射联合主键的三种主要方式

今天在做项目的时候,一个中间表没有主键,所有在创建实体的时候也未加组件,结果报以下错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateSessionFactory' defined in class path resource [spring-config/ac-cif-srv-config.xml]: Invocation of init met

Hibernate逍遥游记-第10章 映射继承关系-002继承关系树中的根类对应一个表(discriminator、subclass)

1. 2. 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping 3 PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping > 6 7 &l