gpt4 book ai didi

java - Hibernate 外键约束失败

转载 作者:行者123 更新时间:2023-11-30 00:05:42 25 4
gpt4 key购买 nike

我想创建名为 CustomerOrders 的 SQL 数据库表SQL:

CREATE TABLE Customer (
customer_id INT NOT NULL AUTO_INCREMENT,
customer_name VARCHAR(255) UNIQUE,
PRIMARY KEY (customer_id)
);


CREATE TABLE Orders (
order_id INT NOT NULL AUTO_INCREMENT,
customer_name VARCHAR(255),
order_date DATETIME,
PRIMARY KEY(order_id),
FOREIGN KEY (customer_name) REFERENCES Customer(customer_name)
ON UPDATE CASCADE
ON DELETE CASCADE
);

然后我想插入一个带有对 Customer 对象的引用的 Orders 对象。Java 和 Hibernate:

Transaction tx = session.beginTransaction();
Customer cu = (Customer) session.load(Customer.class, 1);

Date d = new Date();
Orders od = new Orders(cu, d);
od.setCustomer(cu);

Set<Orders> hs = new HashSet<Orders>();
hs.add(od);
cu.setOrderses(hs);

session.save(cu);
session.save(od);
tx.commit();

插入返回异常:无法添加或更新子行:外键约束失败我所做的一切都与 Hibernate 教程中的完全一样。我做错了什么?

Java 类

    public class Customer  implements java.io.Serializable {


private Integer customerId;
private String customerName;
private Set<Orders> orderses = new HashSet<Orders>(0);

public Customer() {
}

public Customer(String customerName, Set<Orders> orderses) {
this.customerName = customerName;
this.orderses = orderses;
}

public Integer getCustomerId() {
return this.customerId;
}

public void setCustomerId(Integer customerId) {
this.customerId = customerId;
}
public String getCustomerName() {
return this.customerName;
}

public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public Set<Orders> getOrderses() {
return this.orderses;
}

public void setOrderses(Set<Orders> orderses) {
this.orderses = orderses;
}

}

public class Orders implements java.io.Serializable {


private Integer orderId;
private Customer customer;
private Date orderDate;

public Orders() {
}

public Orders(Customer customer, Date orderDate) {
this.customer = customer;
this.orderDate = orderDate;
}

public Integer getOrderId() {
return this.orderId;
}

public void setOrderId(Integer orderId) {
this.orderId = orderId;
}
public Customer getCustomer() {
return this.customer;
}

public void setCustomer(Customer customer) {
this.customer = customer;
}
public Date getOrderDate() {
return this.orderDate;
}

public void setOrderDate(Date orderDate) {
this.orderDate = orderDate;
}

}

最佳答案

关于java - Hibernate 外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24575780/

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