简体   繁体   中英

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

I am using JPA, Hibernate and MySQL

and I am getting following exception

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

Turn this off by adding this before the insert command:

SET foreign_key_checks = 0;

then set it back after your inserts:

SET foreign_key_checks = 1;

Just make sure you know what you are doing.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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