我正在使用 JPA、Hibernate 和 MySQL
我得到以下异常
Cannot add or update a child row: a foreign key constraint fails
@Entity
@Table(name = "my_payment_request")
public class Request implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy = "request",cascade=CascadeType.ALL)
private List<PaymentItem> paymentItems;
}
@Entity
@Table(name = "my_payment_item")
public class PaymentItem {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne
@JoinColumn(name = "request_id", nullable=true)
private Request request;
}
public class Manager {
Request request = new Request();
List<PaymentItem> paymentItems = new ArrayList<PaymentItem>();
PaymentItem paymentItem1 = new PaymentItem();
paymentItem1.setRequest(request);
PaymentItem paymentItem2 = new PaymentItem();
paymentItem2.setRequest(request);
paymentItems.add(paymentItem1);
paymentItems.add(paymentItem2);
request.setPaymentItems(paymentItems);
}
Hibernate code
Session session = sessionFactory.openSession();
session.beginTransaction();
request.setId((Long) session.save(request));
session.getTransaction().commit();
最佳答案
通过在插入命令之前添加这个来关闭它:
SET foreign_key_checks = 0;
然后在插入后将其设置回去:
SET foreign_key_checks = 1;
只需确保您知道自己在做什么。
关于java - 无法添加或更新子行 : a foreign key constraint fails in hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498729/