繁体   English   中英

无法添加或更新子行:外键约束在休眠状态下失败

[英]Cannot add or update a child row: a foreign key constraint fails in hibernate

我正在使用JPA,Hibernate和MySQL

我正在追随异常

无法添加或更新子行:外键约束失败

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

}

休眠代码

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;

只要确保您知道自己在做什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM