2016-04-13 11 views
2

Ich habe eine Anwendung, die auf Spring-Boot, mit JPA-Repositorys auf HSQL-Datenbank basiert.Spring JPA-Daten entfernt nach dem Herunterfahren der Anwendung

Problem ist, dass während der Anwendung, ich eine Entität erstellen, und es ist korrekt in der Datenbank (im Datenbankmanager zu sehen) beibehalten. Aber nach dem Herunterfahren der Anwendung von Eclipse werden alle Daten entfernt;

Saving ist wie diese

ausgeführt
@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); 
    } 
} 

ich ziemlich sicher, dass seine Konfigurationsproblem, aber mit Federverschluß im Grunde nur Konfiguration, die ich habe, ist diese Konfigurationsdatei.

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

Zeigen Sie Ihre Datenquelle an. Anscheinend verwenden Sie hsqldb, das normalerweise im Speicher verwendet wird. Wenn dies der Fall ist, wird es natürlich sterben, wenn Sie die Anwendung herunterfahren. – dambros

+0

https://stackoverflow.com/questions/6364171/hsql-question-on-data-being-saved finden Sie unter diesem Link. Dies könnte ein ähnliches Problem sein. – Drew1208

Antwort

6

Haben Sie hbm2ddl Text irgendwo in Ihren Konfigurationseigenschaften. Es sollte auf "update" oder "none" gesetzt werden, anscheinend haben Sie create-drop.

+0

das ist die richtige Antwort, ich habe Eigenschaft hinzufügen spring.datasource.hbm2ddl.auto = update und es funktioniert gut –

+0

Ich war froh zu helfen – LearningPhase

+0

Diese Eigenschaft könnte spring.jpa.hibernate.ddl-auto = update auch sein. – razvanone

0

einen lokalen Dateinamen in application.properties Datenquelle URL angeben:

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

Sie die spring.datasource.driver-class-name Eigenschaft entfernen kann als Federverschluß es Eigentum von URL erkennt.

0
  1. Wenn Sie die Daten in eine @Test einfügen, wird sie standardmäßig zurückgesetzt.
  2. Ihre Datenbank wird möglicherweise gelöscht, wenn Sie die Anwendung wie von LearningPhase neu gestartet haben.
  3. Die insert ist nie wirklich verpflichtet - weil es außerhalb einer Transaktion ist oder weil Exception geworfen und nicht innerhalb der Transaktion behandelt wird.
Verwandte Themen