每当我启动应用程序时,spring data.sql文件都会添加一条新记录。

时间:2018-07-12 19:08:38

标签: java sql spring postgresql hibernate

这是我的application.properties文件:

spring.datasource.url= jdbc:postgresql://localhost:5432/Crypto
spring.datasource.username=postgres
spring.datasource.password=wololo
spring.jpa.hibernate.ddl-auto=update
spring.datasource.initialization-mode=always

这是我的data.sql文件:

INSERT INTO crypto(departure, details, lowest_price_date, lowest_price_ever, coin_name, url)
VALUES (null, null, null, 10, 'foooobs', 'http://foo.foo');

问题是每次我重新启动应用程序时,都会添加一条新记录,即使该记录存在于上一个会话中也是如此。我只想用数据初始化数据库一次,永远不要更改。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使用固定的ids

INSERT INTO 
crypto (id, departure, details, lowest_price_date, lowest_price_ever, coin_name, url)
        ^^
VALUES (1, null, null, null, 10, 'foooobs', 'http://foo.foo');
        ^

所以会发生什么,首先使用此解决方案创建spring.jpa.hibernate.ddl-auto=update,如果记录未退出,则创建一个新记录,如果退出,则仅更新属性,而不创建新记录。


或者也许您可以看看flyway,在这种情况下,它是一个很好的工具。