这是我的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');
问题是每次我重新启动应用程序时,都会添加一条新记录,即使该记录存在于上一个会话中也是如此。我只想用数据初始化数据库一次,永远不要更改。
有什么想法吗?
答案 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,在这种情况下,它是一个很好的工具。