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

如何在Spring Boot2启动时运行自定义ddl脚本

闻人宝
2023-03-14

目前,我对模型做了很多更改,希望在更改后删除所有内容,并通过以下方式创建测试数据:

@Bean
InitializingBean createTestEntries() {
    return () -> {

        testObject t1 = new testObject (values...);
        testRepo.save(t1);
}

在此之后,我想创建一个数据库视图,但我没有找到使用Spring Boot2+Hibernate/JPA来完成此操作的方法

当然,我可以禁用ddl-auto并使用schema.sql和data.sql文件来执行所有操作,但是我的模型更改自动填充到DB中是非常舒服的。

共有1个答案

益何平
2023-03-14

您可以将Springs JdbcTemplate注入到createTestEntries()方法中,并使用它执行自定义SQL来创建视图:

@Bean
InitializingBean createTestEntries(@Autwired JdbcTemplate jdbc) {
return () -> {

    testObject t1 = new testObject (values...);
    testRepo.save(t1);

    jdbc.update("custom SQL here")
}

根据您的需要,您也可以注入DataSource或EntityManager(使用本机查询)并使用它。

编辑:本机查询示例

@Bean
InitializingBean createTestEntries(@Autowired EntityManager em) {
   return () -> {
     Query q = em.createNativeQuery("custom sql");
     q.executeUpdate()
   }
}
 类似资料:
  • 问题内容: 在Amazon S3 Linux实例上,我有两个名为的脚本,它们 永远 启动和停止(依次运行Node.js应用程序)。我使用这些脚本手动启动和停止我的Node.js应用程序。到目前为止,一切都很好。 我的问题:我还想将其设置为在系统启动时运行。我知道我需要在其中添加文件,并且知道如何将其符号链接到其中的适当目录,但是我无法弄清楚放置在其中的文件中实际需要什么。我认为这应该只是一条线,例

  • 本文向大家介绍在Windows启动时自动运行Python脚本?,包括了在Windows启动时自动运行Python脚本?的使用技巧和注意事项,需要的朋友参考一下 将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行。这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windows后,它会执行(相当于双击)其启动文件

  • 问题内容: 首先,这可能需要移至超级用户。我无法确定哪个场地更好。 我正在尝试编写一个将在启动/重新启动时运行的R脚本,并将该计算机添加到doRedis工作者池中。(doRedis是一个foreach后端)。 这是我的R脚本“〜/ Rworker.R” 我可以使用command从命令行运行此脚本 。 接下来,我编写了一个shell脚本来运行R脚本,标题为“ /etc/init.d/StartWor

  • 在前面的章节中,我们讨论了各种模式构造,包括 Table , ForeignKeyConstraint , CheckConstraint 和 Sequence . 一直以来,我们都依赖 create() 和 create_all() 方法 Table 和 MetaData 以便为所有构造发出数据定义语言(DDL)。当发出命令时,将调用预先确定的操作顺序,并且无条件创建每个表的DDL,包括所有约束

  • 问题内容: 我正在使用Search Guard插件来保护由多个节点组成的elasticsearch集群。这是我的Dockerfile: 初始化SearchGuard(创建内部用户并分配角色)。容器启动后,我需要运行脚本。这是问题所在:除非运行Elasticsearch,否则脚本将不会初始化任何安全性索引。 脚本的内容是: 现在,我只是在容器启动后手动运行脚本,但是由于我是在Kubernetes上运

  • 我想在我的Parallela板启动时运行一个bash脚本,它有Ubuntu。我搜索了SO,在这里找到了说明: 在linux ubuntu下启动时自动运行程序 在Linux上启动时以编程方式运行 我的bash脚本是test。sh,只有一行: 1) 我尝试的第一种方法是添加到脚本的aboslute路径: 2) 我尝试的第二种方法是遵循上面公认的答案。 在这两种情况下,脚本都是在引导后执行的,并且有一个