【问题标题】:Getting "org.h2.jdbc.JdbcSQLException: Table "BOOK_PUBLISHERS" not found; SQL statement:"获取“org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”;SQL 语句:”
【发布时间】:2016-12-06 21:29:56
【问题描述】:

使用 Spring Boot、Spring Data JPA 和 H2 内存数据库来映射多对多关系。

我有两张表,其中包含实体 Book & Publisher。他们的多对多关系在哪里发货

创建连接表以将Book_IdPublisher_id 作为外键存储在book_publisher 表中,如下所示。

create table book_publisher 
(
  book_id number not null,
  publisher_id number not null,
  PRIMARY KEY (book_id, publisher_id),
  CONSTRAINT fk_bookpublisher_book FOREIGN KEY (book_id) REFERENCES CURRENCY (id) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT fk_bookpublisher_publisher FOREIGN KEY (publisher_id) REFERENCES VENUE (id) ON DELETE CASCADE ON UPDATE CASCADE
 ); 

我没有为book_publisher 表编写域类。

但我得到了:

org.h2.jdbc.JdbcSQLException:找不到表“BOOK_PUBLISHERS”; SQL 语句:插入 book_publisher (book_id, publisher_ID) 值 (?, ?) [42102-191] "同时存储书籍对象(书籍类有 发布者对象作为“SET”变量

如何解决这个错误?

【问题讨论】:

    标签: java spring-boot many-to-many h2


    【解决方案1】:

    如果您正在运行您提到的创建脚本,它将在表 CURRENCY 和 VENUE 之间创建多对多关系。所以我会说你分享的代码 sn-p 是错误的,这可能是表 BOOK_PUBLISHER 没有成功创建的原因。

    创建 many_to_many 关系(在表 BOOK 和 PUBLISHER 之间)的正确 SQL 代码应该是:

    create table book_publisher 
    (
      book_id number not null,
      publisher_id number not null,
      PRIMARY KEY (book_id, publisher_id),
      CONSTRAINT fk_bookpublisher_book FOREIGN KEY (book_id) REFERENCES BOOK (id) ON DELETE CASCADE ON UPDATE CASCADE,
      CONSTRAINT fk_bookpublisher_publisher FOREIGN KEY (publisher_id) REFERENCES PUBLISHER (id) ON DELETE CASCADE ON UPDATE CASCADE
     ); 
    

    【讨论】:

    • 我刚刚根据您的评论更改了脚本。我仍然得到同样的例外。现在创建了名为“BOOK_PUBLISHER”的表,但应用程序仍然不会通过抛出错误将记录插入到该“BOOK_PUBLISHER”中。
    • @SatishKonda 请分享新的错误堆栈跟踪。它不能包含相同的异常。您的第一个例外是表 BOOK_PUBLISHER 不存在
    猜你喜欢
    • 2017-12-10
    • 2013-07-26
    • 1970-01-01
    • 2022-06-22
    • 2019-09-28
    • 2015-02-25
    • 1970-01-01
    • 2020-04-23
    • 2013-05-24
    相关资源
    最近更新 更多