当前位置: 首页 > 知识库问答 >
问题:

无法从Spring Boot应用程序中的data.sql导入sql insert脚本数据

巫健柏
2023-03-14

我有一个非常基本的Spring Boot应用程序,它具有schema.sqldata.sql,分别创建H2DB模式和导入数据。

我的架构H2 DB中生成得很好,但是由于某些原因没有导入数据。我在表中看到0记录。

我也没有看到任何错误。

pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.7.RELEASE</version>
        <relativePath/>
    </parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

Application.Properties

hibernate.jdbc.batch_size=500
hibernate.show_sql=true
hibernate.format_sql=true

spring.datasource.driverClassName=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/~/h2-dbs/demo-db
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

src/main/resources/schema.SQL

drop table env if exists;
create table env (
  id        int             auto_increment      primary key,
  name      varchar(250)    not null            default 'DEV',
  category  varchar(250)    not null            default 'LOWER',
  enabled   char(1)         not null            default 'Y'
);
insert into env (name, category) values
  ('DEV','LOWER'),
  ('QA','LOWER'),
  ('PERF','HIGHER'),
  ('CT','HIGHER'),
  ('UAT','HIGHER'),
  ('PROD','HIGHER');
@Entity
public class Env {
    private int id;
    private String name;
    private String category;
    private String enabled;

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Basic
    @Column(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Basic
    @Column(name = "category")
    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    @Basic
    @Column(name = "enabled")
    public String getEnabled() {
        return enabled;
    }

    public void setEnabled(String enabled) {
        this.enabled = enabled;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Env env = (Env) o;
        return id == env.id &&
                Objects.equals(name, env.name) &&
                Objects.equals(category, env.category) &&
                Objects.equals(enabled, env.enabled);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, category, enabled);
    }
}
@RepositoryRestResource
public interface EnvRepository extends PagingAndSortingRepository<Env, Integer> {
}

demorestapp.java

@SpringBootApplication
public class DemoRestApp {

    public static void main(String[] args) {
        SpringApplication.run(DemoRestApp.class, args);
    }

}  

共有1个答案

邓英卓
2023-03-14

您需要在属性文件中有这个

spring.jpa.hibernate.ddl-auto=none  

以下是关于这一点的更多信息。正如您所看到的,文档中有这样的注释:

在基于JPA的应用程序中,您可以选择让Hibernate创建模式或使用schema.sql,但不能同时使用。如果使用schema.sql,请确保禁用spring.jpa.hibernate.ddl-auto。

 类似资料:
  • 我最大的问题是偶尔我的谷歌表格应用程序脚本无法读取单元格的内容。它会停止工作5-30分钟,然后重新开始工作。这是一个实时评分表,所以这是一个大问题,不能保存数据相当长的时间。 我尝试了多种方式获取单元格数据:ss.getSheetByName('Sheet1'). getRange('L1'). getValue()我还创建了一个数组,方法是使用一个范围和该数组中的数据。两种方式都可以工作一段时间

  • 我正在使用Spring引导应用程序连接MongoDB实例。我们已在MongoDB上启用了以下角色的身份验证 角色:[ { role: "dbOwner ",db: "{{ mongo.database_name }}" } 角色:[ { role: "readWrite ",db: "{{ mongo.database_name }}" } 我们使用conf文件提供凭证 数据: mongodb。u

  • 我正在尝试在STS中创建一个默认的Spring Boot应用程序。它在STS文件中创建了一个“Spring starter Project”-->。创建项目后未进行任何更改。错误立即显示在POM文件中...

  • 所以我试图从model.js导出/导入脚本,我使用这个 这是模型的脚本。js 这是渲染部分,我试图从model.js.访问食谱部分 我试图在这里访问配方部分:const{recipe}=model。装载配方; 但我正在变得不明确。请帮助我确定问题,是导出、导入还是我以错误的方式访问数据?另外,我应该如何将配方部分推送到状态配方? 非常感谢你。

  • 尝试使用主连接字符串和用户名(数据库名)连接到cosmosdb Mongo API 原因:com.mongodb.mongotieoutexception:在等待与com.mongodb.client.internal.mongoclientdelegate$1@3C291AAD匹配的服务器时,在30000 ms后超时。群集状态的客户端视图是{type=replica_set,servers=[{