我有一个带有表实体的项目。我想从schema.sql
运行一些 SQL 来更新我的表进行测试。但我发现 Spring 首先应用schema.sql
然后创建带有@Table
注释的表。所以没有创建表,我收到错误消息:
嵌套异常是 org.h2.jdbc.JdbcSQLException:找不到表 "BOOK";SQL语句:
这是我的表格:
@Entity
@Table(name="BOOK")
public class Book {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long bookId;
//and all getter and setters
这很scheam.sql
INSERT INTO book VALUES (1, 'Of Mice and Men', '1954-11-08', 100, 11.00);
INSERT INTO book VALUES (2, 'One Flew Over the Cuckoos Nest', '1973-11-08', 100, 15.00);
INSERT INTO book VALUES (3, 'For Whom the Bell Tolls', '1932-11-08', 100, 13.00);
所以我想先创建表格,然后应用我的schema.sql
. 我怎么能得到它?
schema.sql 用于创建表(CREATE TABLE
, ...),而不是用于插入记录。我不知道你是如何创建表的,但我想它们要么已经创建,要么你正在使用类似 Hibernate 的生成 DDL 选项。
无论如何,要在现有表中插入或更新记录,您应该使用 data.sql。因此,在您的情况下,您应该将文件重命名为数据.sql以使其正常工作。
有关此内容的详细信息,请参阅文档。
1.) 将文件重命名为 data.sql
2.) 将以下行添加到应用程序属性中:
spring.jpa.defer-datasource-initialization = true