为什么import.sql会在Spring Boot中失败?

时间:2015-09-21 06:10:42

标签: java spring maven spring-boot h2

我在Spring Boot上关注了this tutorial

这家伙相当快,但看起来我们的代码一切都是一样的。当我到达观察H2控制台的时候,我注意到我错过了我的Speaker表。

我在这里看到了很多问题,到处都是博客,似乎你需要做的就是将文件放在main/resources 中并且它有效。好吧,它没有!

有些答案是关于persistence.xml和/或H2的配置文件。好吧,我没有这些,也没有那个教程和他的作品。

我发现一些看似简单的东西对Spring来说非常令人沮丧,我厌倦了环顾四周并找到了不起作用的相同答案。

有人可以解释为什么会失败吗?

我无法想象除了pom.xml之外我还需要什么,因为教程只是简单地添加了import.sql并且像其他人一样声称 - 它只是有效。 如果需要,我会添加更多。

的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.test</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</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-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

import.sql

INSERT INTO SPEAKER(ID, FIRST_NAME, LAST_NAME, TWITTER, BIO) VALUES (0, 'Foo', 'Baz', 'foobaz', 'Foo Baz hates Twitter');
INSERT INTO SPEAKER(ID, FIRST_NAME, LAST_NAME, TWITTER, BIO) VALUES (1, 'Bar', 'Baz', 'barbaz', 'Bar Baz hates Twitter too');
INSERT INTO SPEAKER(ID, FIRST_NAME, LAST_NAME, TWITTER, BIO) VALUES (2, 'Santa', 'Clause', 'saintnick', 'Santa is a Twitter champ');

1 个答案:

答案 0 :(得分:1)

我通过稍微仔细的调查找到了一个小但重要的细节答案。显然,当控制台启动时,它会在表单条目中添加默认值,其中一个与教程不同。

对于JDBC URL,默认值为jdbc:h2:~/test

enter image description here

我必须将其更改为jdbc:h2:mem:testdb

enter image description here

我现在能够看到Speaker表和数据。

一旦我做了更改,它就作为默认值保留。我想作者已经这样做了,我错过了差异。

感谢您的帮助@M。 Deinum!