Entity 实体继承策略:默认

本文介绍了一种使用实体类设计与继承映射的方法,通过Item基类及Book、CD子类的具体实现,展示了如何在数据库表Item中存储不同类型的实体数据。此方法利用DTYPE字段区分具体类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Item 实体类:在数据中有对应表,表名为Item.

@Entity
public class Item {

	@Id @GeneratedValue
	protected Long id;
	@Column(nullable = false)
	protected String title;
	@Column(nullable = false)
	protected Float price;
	protected String description;
	
	// Constructors, setters, getters
}

 

Book实体类:在数据库中对应表为Item,也就是说Book 自身的字段需要出现在Item数据表中。

@Entity
public class Book extends Item {

	private String isbn;
	private String publisher;
	private Integer nbOfPage;
	private Boolean illustrations;
	
	// Constructors, setters, getters
}

 

CD实体类:原理同Book,在数据库中对应的表为Item

@Entity
public class CD extends Item {

	private String musicCompany;
	private Integer numberOfCDs;
	private Float totalDuration;
	private String gender;
	// Constructors, setters, getters
}

 

ITEM表:该表包含了 Item 实体类及其子类的所有字段。

如果是持久化Book 类,该类数据将存储到Book 实体类和 Item 实体类的相关字段中,Item表中的DTYPE 字段自动存储字符串“Book”,“Book”为实体类的名字。

如果是持久化CD 类,原理同上。

CREATE TABLE ITEM (
	ID BIGINT,
	DTYPE VARCHAR(31),
	TITLE VARCHAR(50),
	PRICE FLOAT,
	DESCRIPTION VARCHAR(200),
	ISBN VARCHAR(50),
	PUBLISHER VARCHAR(50),
	NBOFPAGE INT,
	ILLUSTRATIONS SMALLINT,
	MUSICCOMPANY VARCHAR(50),
	NUMBEROFCDS INT,
	TOTALDURATION FLOAT,
	GENDER VARCHAR(10),
	PRIMARY KEY (ID)
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值