Hibernate使用注解,继承映射写法

本文详细介绍了Hibernate使用注解进行继承映射的三种策略:SINGLE_TABLE(单表策略),TABLE_PER_CLASS(每个类一张表)和JOINED(联合继承)。通过示例代码展示了如何在实体类中配置@Inheritance,@DiscriminatorColumn和@DiscriminatorValue等注解,并给出了每种策略对应的数据库表结构和数据存储方式。
摘要由CSDN通过智能技术生成

继承映射在 Annotation 中使用 @Inheritance 注解,并且需要使用 strategy 属性指定继承策略,继承策略有 SINGLE_TABLE、TABLE_PER_CLASS 和 JOINED 三种。


一、SINGLE_TABLE

SINGLE_TABLE 是将父类和其所有的子类集合在一块,存在一张表中,并创建一个新的字段来判断对象的类型。

Person.java:

<div>
package com.getop.sales.model;

import javax.persistence.*;

/**
 * 
 * @ClassName: Person
 * @Description: 人类
 * @author LiYun
 * @date 2014-8-19 下午6:01:55
 * 
 */
@Entity
@Table(name = "SALES_PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("person")
public class Person {

	private Integer id;
	private String name;

	@Id
	@Column(name = "id")
	@SequenceGenerator(name = "SALES_PERSON_ID", sequenceName = "SALES_PERSON_ID", allocationSize = 1, initialValue = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SALES_PERSON_ID")
	public Integer getId() {

		return id;
	}

	public void setId(Integer id) {

		this.id = id;
	}

	public String getName() {

		return name;
	}

	public void setName(String name) {

		this.name = name;
	}

}
</div>

@Inheritance 的 strategy 属性是指定继承关系的生成策略,@DiscriminatorColumn 注解作用是指定生成的新的判断对象类型的字段的名称和类型,@DiscriminatorValue 注解是确定此类(Person)的标示,即 DiscriminatorColumn 的值。

Student.java:

<div>
package com.getop.sales.model;

import javax.persistence.*;

@Entity
@DiscriminatorValue("student")
public class Student extends Person {

	private Integer score;

	public Integer getScore() {

		return score;
	}

	public void setScore(Integer score) {

		this.score = score;
	}

}
</div>

Teacher.java:

<div>
package com.getop.sales.model;

import javax.persistence.*;

@Entity
@DiscriminatorValue("teacher")
public class Teacher extends Person {

	private String title;

	public String getTitle() {

		return title;
	}

	public void setTitle(String t
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值