java - 无法添加或更新子行 : a foreign key constraint fails in hibernate

标签 java mysql hibernate jpa

我正在使用 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/

相关文章:

java - 配置hibernate 5.2.10时出错

mysql - 如何在我的数据库中实现 'search'?

java - MySQL 触发器通过直接插入工作,但在通过 Hibernate 提交时不工作

java - Class.forName 未从指定目录加载数据

java - 关键监听器事件未触发?

mysql - SQL 查询总唯一点击数

java - 如何使用相同的自定义 id 生成器统一多个实体的 @GenericGenerator 声明?

java - java中的RGB图像过滤器

java - 对象中的字符串不等于 ArrayList 中同一对象的字符串

java - postgresql 的 Hibernate 5 命名策略