经过一些研究,我找不到相关的东西。
我使用如下表:
@Table(name="product")
public class Product {
@Id
@GeneratedValue
private long productId;
// other irrelevant columns and code goes here
}
现在,我想创建另一个表格:
为了做到这一点,我通过以下其他示例或示例尝试了类似的事情:
@Table(name="combined_products")
public class CombinedProducts {
@EmbeddedId
protected CombinedProductsPK bridgeId;
@ManyToOne
@JoinColumns({
@JoinColumn(name = "product_1", referencedColumnName = "product_id"),
@JoinColumn(name = "product_2", referencedColumnName = "product_id")
})
@Column(name = "notes")
private String notes;
public ProductMatrix() {
bridgeId = new CombinedProductsPK();
}
// irrelevant code again
}
和CombinedProductsPK:
@Embeddable
public class CombinedProductsPK implements Serializable {
public Long product_1;
public Long product_2;
public CombinedProductsPK() {}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
CombinedProductsPK b = (CombinedProductsPK)obj;
if (b == null) {
return false;
}
return b.product_1.equals(product_1) && b.product_2.equals(product_2);
}
@Override
public int hashCode() {
return (int)(product_1 + product_2);
}
}
所有似乎都很完美。
但是,我的问题是,当我查看数据库并且特定于combined_products表时,有没有 FOREIGN_KEY约束。有没有办法在Java中描述这个约束,或者我必须在Java部分手动处理这个?
这就是我的表在MySQLWorkbench中的样子
CREATE TABLE `combined_products` (
`product_1` bigint(20) NOT NULL,
`product_2` bigint(20) NOT NULL,
`notes` varchar(255) DEFAULT NULL,
PRIMARY KEY (`product_1`,`product_2`)
)
我在这里走到了尽头,所以也许我走错了路。每个推荐被接受!提前致谢...