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