gpt4 book ai didi

java - 通过在 Java 中组合另一个表中的一列来创建表

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:24 25 4
gpt4 key购买 nike

所以经过一些研究,我找不到相关的东西。

我使用如下一张表:

@Table(name="product")
public class Product {
@Id
@GeneratedValue
private long productId;

// other irrelevant columns and code goes here
}

现在,我想创建另一个表,如下所示:

table columns and what rows I want to show

为了做到这一点,我通过遵循其他示例或示例尝试了类似的操作:

@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
}

和组合产品PK:

@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`)
)

我现在陷入了死胡同,所以也许我走错了路。每个建议都会被接受!提前致谢...

最佳答案

我没明白你的意思。但也许你需要尝试 @JoinTable ?

enter link description here

希望对您有帮助。

关于java - 通过在 Java 中组合另一个表中的一列来创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43541790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com