spring boot h2 data init

时间:2017-10-11 06:50:54

标签: spring spring-boot initialization h2

我正在尝试将init数据加载到h2

我有用户模型

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;    
    private String login;
    private String password;

    public User() {
    }

    public User(String login, String password) {
        //this.id = id;
        this.login = login;
        this.password = password;
    }
    //...getters and setters
}

我的资料库

@Repository
public interface UsersRepository extends CrudRepository<User, Long> {
}

我没有UsersRepository的实现。看起来像spriing-boot为我做,因为我可以保存和检索数据

现在我试图通过将data-h2.sql放入资源

来初始化数据

数据h2.sql

INSERT INTO users (login, password) VALUES
  ('user1', 'pass1'),
  ('user2', 'pass2');

看起来像某个地方的数据导出

HHH000412:Hibernate Core {5.0.12.Final}

HHH000206:找不到hibernate.properties

HHH000021:字节码提供程序名称:javassist

HCANN000001:Hibernate Commons Annotations {5.0.1.Final}

HHH000400:使用方言:org.hibernate.dialect.H2Dialect

HHH000227:运行hbm2ddl架构导出

HHH000230:架构导出完成

但是当我尝试检索数据时,没有数据

@RestController
@RequestMapping("/api")
public class ApiController {

    final UsersRepository usersRepository;

    public ApiController(UsersRepository usersRepository) {
        this.usersRepository = usersRepository;
    }

    @GetMapping("/users")
    public Iterable<User> getUsers() {
        return usersRepository.findAll();
    }
    }

我缺少什么?提前谢谢......

2 个答案:

答案 0 :(得分:0)

如果我在spring documentation中理解正确,则需要添加

Table()

属性 应用程序属性 。然后spring在类路径中搜索名为data-h2.sql的文件并执行它。

答案 1 :(得分:0)

首先在 application.properties 文件

中添加连接属性
spring.datasource.url=jdbc:h2:~/Desktop/Database/test;DB_CLOSE_ON_EXIT=FALSE;
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

然后

添加模型对象@Table(name = "users") anotation,如下所示

@Entity
@Table(name = "users")
public class User {
....

}

最后将sql脚本文件名 data-h2.sql 更改为 data.sql