Entity Many-to-Many 通过映射表关联

/**
 * CD实体类,对应表CD。
 * @author William
 */
@Entity
public class CD {

	@Id @GeneratedValue
	private Long id;
	private String title;
	private Float price;
	private String description;
	/**
	 * 多对多关联ARTIST表。<br/>
	 * mappedBy 说明Artist实体类中必须有一个标注了ManyToMany的字段,并且字段名为cds。<br/>
	 * CascadeType.PERSIST 说明支持级联持久化。<br/>
	 */
	@ManyToMany(mappedBy = "cds", cascade = {CascadeType.PERSIST})
	private List<Artist> artists;
	
	// Constructors, setters, getters
}

 

/**
 * 艺术家实体类,对应表ARTIST。
 * @author William
 */
@Entity
public class Artist {

	@Id @GeneratedValue
	private Long id;
	private String firstName;
	private String lastName;
	
	/**
	 * 多对多关联CD表。<br/>
	 * CascadeType.PERSIST 说明支持级联持久化。<br/>
	 * joinColumns 是映射表CD_ARTIST中关联ARTIST.ID的外键字段名。<br/>
	 * inverseJoinColumns 是映射表CD_ARTIST中关联CD.ID的外键字段名。<br/>
	 */
	@ManyToMany(cascade = {CascadeType.PERSIST})
	@JoinTable(name = "CD_ARTIST", 
		joinColumns = @JoinColumn(name = "ARTIST_ID"),
		inverseJoinColumns = @JoinColumn(name = "CD_ID"))
	private List<CD> cds;
	
	// Constructors, setters, getters
}

 

CREATE TABLE CD (
	ID BIGINT,
	TITLE VARCHAR(50),
	PRICE FLOAT,
	DESCRIPTION VARCHAR(200),
	PRIMARY KEY (ID)
);

CREATE TABLE ARTIST (
	ID BIGINT,
	FIRSTNAME VARCHAR(50),
	LASTNAME VARCHAR(50),
	PRIMARY KEY (ID)
);

CREATE TABLE CD_ARTIST (
	CD_ID BIGINT,
	ARTIST_ID BIGINT,
	PRIMARY KEY (CD_ID, ARTIST_ID),
	FOREIGN KEY (CD_ID) REFERENCES CD(ID),
	FOREIGN KEY (ARTIST_ID) REFERENCES ARTIST(ID)
);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值