/**
* 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) );