[英]schema.sql executed before table creation, inserts in schema.sql fails
我有一个带有 Table 实体的项目。 我想从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的generate DDL选项之类的东西。
无论如何,要在现有表中插入或更新记录,应使用data.sql 。 因此,在您的情况下,应将文件重命名为data.sql以使其正常工作。
有关此内容的更多信息,请参见文档 。
1.) 将文件重命名为 data.sql
2.) 将以下行添加到 application.properties:
spring.jpa.defer-datasource-initialization = true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.