首页 > 解决方案 > Jooq 一次将 one2one 和 one2many 关系数据插入到 2 个表中。如何处理问题和回滚

问题描述

铁模型

class Author {
  id, name
}

class Book {
  id, title, author
}


create table author (
    id bigint not null auto_increment,
    name varchar,
    CONSTRAINT author_pk PRIMARY KEY (id),
);
create table book (
    id bigint not null auto_increment,
    title varchar,
    author_id bigint,
    CONSTRAINT book_pk PRIMARY KEY (id),
    CONSTRAINT book_fk_author FOREIGN KEY (author_id) REFERENCES author (id) ON DELETE NO ACTION ON UPDATE NO ACTION
)

如何在jooq中一次插入?如果某些查询失败,如何处理回滚?它必须在我这边编程吗?我在文档中找不到关于这种情况的消息:(

我应该像手动一样:

  1. 按名称在数据库中查找作者 ID
  2. 如果作者不存在插入新作者
  3. 插入带有作者 ID 的书
  4. 如果书籍插入失败,那么如果这次插入则删除作者?

如何处理?你有这方面的例子吗?

编辑:我使用 h2 数据库

标签: javasqlh2jooq

解决方案


数据库中的所有更改都是事务性的。

如果 on 操作失败,您可以回滚事务,然后数据库中将没有任何数据。所以没有必要删除一些东西。

请阅读文档中有关事务管理的部分: https ://www.jooq.org/doc/3.14/manual-single-page/#transaction-management


推荐阅读