我想使用联接表在两个表之间建立一对多关系。
最后,我想使用Hibernate批注执行此操作。
我找到了一些使用xml映射执行此操作的示例,但没有带注释的示例。
我相信这就是需要创建表的方式
CREATE TABLE `PRODUCT` ( `PRODUCT_ID` BIGINT PRIMARY KEY AUTO_INCREMENT ); CREATE TABLE `PARTS` ( `PART_ID` BIGINT PRIMARY KEY AUTO_INCREMENT ); -- USER_IMAGE_ID must be unique if we want a one-to-many relationship between PRODUCTS & PARTS tables CREATE TABLE `USER_DETAILS_IMAGE` ( `PRODUCT_ID` BIGINT, `PART_ID` BIGINT UNIQUE, CONSTRAINT `FK_PRODUCT_ID` FOREIGN KEY (`PRODUCT_ID`) REFERENCES `PRODUCT`(`PRODUCT_ID`), CONSTRAINT `FK_PART_ID` FOREIGN KEY (`PART_ID`) REFERENCES `PARTS`(`PART_ID`) );
不要寻找例子。阅读官方文档:
@Entity public class Product { private String serialNumber; private Set<Part> parts = new HashSet<Part>(); @Id public String getSerialNumber() { return serialNumber; } void setSerialNumber(String sn) { serialNumber = sn; } @OneToMany @JoinTable( name="PRODUCT_PARTS", joinColumns = @JoinColumn( name="PRODUCT_ID"), inverseJoinColumns = @JoinColumn( name="PART_ID") ) public Set<Part> getParts() { return parts; } void setParts(Set parts) { this.parts = parts; } } @Entity public class Part { ... }
另外,请注意,这是单向一对多关联的默认设置。因此,@JoinTable如果默认的表名和列名适合您,您甚至不必提供注释。
@JoinTable