2014-07-11 2 views
19

मैं वसंत बूट के आधार पर एक छोटे से आवेदन किया:फ़ाइल आधारित h2 कायम लेकिन वसंत में लोड नहीं बूट

  • वसंत-बूट स्टार्टर-वेब
  • वसंत-बूट स्टार्टर-डेटा-जेपीए

एप्लिकेशन में केवल एक डोमेन क्लास Post.java है। तदनुसार एक RestController और एक डीएओ है। डेटा को एक फ़ाइल आधारित एचएसक्यूएल डीबी में जारी रखा जाना चाहिए।

जब एप्लिकेशन चल रहा है तो सबकुछ ठीक लगता है। डेटा संग्रहित है। एच 2 फ़ाइल बनाई गई है और इसमें सम्मिलित कथन शामिल हैं।

हालांकि, जब मैं एप्लिकेशन को मारता हूं और इसे दूसरी बार शुरू करता हूं। कोई डेटा लोड नहीं होता है। (जैसे कि एक ब्रांड नई डीबी फ़ाइल बनाई गई थी, जो पुराने को ओवरराइट करती है)।

application.properties

spring.datasource.url = jdbc:h2:file:~/testdb 
spring.datasource.username = sa 
spring.datasource.password = sa 
spring.datasource.driverClassName = org.h2.Driver 

pom.xml

<!-- Spring Boot Web --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

<!-- Spring Boot Data JPA --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-data-jpa</artifactId> 
</dependency> 

<!-- H2 DB --> 
<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.179</version> 
</dependency> 

PostDAO.java

public interface PostDAO extends JpaRepository<Post, Integer>{ 
    public Post findByMessage(String message); 
} 

Post.java

@Entity 
public class Post { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private Long id; 
    private String message; 

    public Post(){ 
    } 

    public Post(String message) { 
     super(); 
     this.message = message; 
    } 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 
} 
+0

क्या आप अपडेट किए गए pom.xml, application.properties, और इसे काम करने के लिए आपके द्वारा किए गए किसी अन्य परिवर्तन को प्रदान कर सकते हैं। धन्यवाद। –

+0

इस मामले में आपको बस अपनी application.properties फ़ाइल में 'spring.jpa.hibernate.ddl-auto = validate' जोड़ने की आवश्यकता है। @SrkiRakic ​​ – qiubix

उत्तर

20

spring.jpa.hibernate.ddl-auto के लिए डिफ़ॉल्ट create-drop है अगर आप एक एम्बेडेड डेटाबेस का उपयोग करें। आप शायद इसे खाली होना चाहते हैं, या सिर्फ validate (none भी काम कर सकता है लेकिन मुझे लगता है कि हाइबरनेट द्वारा बहिष्कृत किया गया है)।

+1

वह था। धन्यवाद! भले ही मुझे लगता है कि वसंत स्वचालित रूप से सही व्यवहार का पता लगाएगा: http://docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/html/howto-database-initialization.html – Phil