我有一个基于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
答案 0 :(得分:11)
您的配置属性中是否有hbm2ddl文本。它应设置为update
或none
,显然您可能有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)
@Test
中插入数据,则默认会回滚。insert
永远不会真正提交 - 因为它不在事务中,或者因为在事务中抛出Exception
而没有提交。答案 3 :(得分:0)
检查属性文件是否存在如下配置行
spring.jpa.hibernate.ddl-auto=create
只需将其删除或更改为
spring.jpa.hibernate.ddl-auto=update