应用程序关闭后删除了Spring JPA数据

时间:2016-04-13 17:05:38

标签: java spring jpa spring-boot spring-data

我有一个基于Spring启动的应用程序,在HSQL数据库上使用JPA存储库。

问题是当应用程序运行时,我创建了一个实体,并且它正确地保存到数据库(可以在数据库管理器中看到)。但是在从eclipse关闭应用程序之后,所有数据都被删除了;

像这样执行保存

@Service
public class NotificationService {

    @Autowired
    private NotificationRepository notificationRepository;

    public void notifyRefreshArticles(){
        Notification notification = new Notification();
        notification.setCreatedAt(LocalDateTime.now());
        notification.setNotificationSeverity(NotificationSeverity.NORMAL);
        notification.setNotificationType(NotificationType.REFRESH_ARTICLES);

        notificationRepository.save(notification);
    }
}

我非常确定它的配置问题,但是春天启动基本上只有我配置的配置是这个配置文件。

spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.url=jdbc:hsqldb:hsql://localhost/rr_app_database
spring.datasource.username=XXXXXX
spring.datasource.password=XXXXXX
spring.datasource.show-sql=true

4 个答案:

答案 0 :(得分:11)

您的配置属性中是否有hbm2ddl文本。它应设置为updatenone,显然您可能有create-drop

答案 1 :(得分:0)

在application.properties数据源URL中指定本地文件名:

spring.datasource.url=jdbc:hsqldb:file:/home/username/testedb

您可以删除spring.datasource.driver-class-name属性,因为Spring Boot会通过URL属性检测到它。

答案 2 :(得分:0)

  1. 如果您在@Test中插入数据,则默认会回滚。
  2. 如果您重新启动应用程序,您的数据库可能会被删除,例如LearningPhase建议。
  3. insert永远不会真正提交 - 因为它不在事务中,或者因为在事务中抛出Exception而没有提交。

答案 3 :(得分:0)

检查属性文件是否存在如下配置行

spring.jpa.hibernate.ddl-auto=create

只需将其删除或更改为

spring.jpa.hibernate.ddl-auto=update