0
作爲基準,我使用Spring Boot演示Accessing Data JPA。彈簧啓動JPA和H2記錄不被堅持
我的目標是能夠使用h2控制檯查看持久實體。我能夠使用Maven運行應用程序,但是當我隨後連接到h2控制檯時,數據庫爲空。
如果我設置spring.jpa.hibernate.ddl_auto=none
那麼應用程序無法運行,所以我知道這個值被從src/main/resources
回升,不過它,我將它設置爲create
或update
,數據庫仍處於mvn spring-boot:run
運行結束空。
在過去的Spring和Hibernate版本中,我設置了auto_dll = create,並且Hibernate創建了數據庫(如果它不存在的話)。這是否不起作用?
這是更新的示例應用程序看起來像什麼,減去進口報關:
@Configuration
@EnableAutoConfiguration
public class Application {
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.h2.Driver");
config.setJdbcUrl("jdbc:h2:file:~/db1");
config.setUsername("sa");
config.setPassword("");
return new HikariDataSource(config);
}
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class);
CustomerRepository repository = context.getBean(CustomerRepository.class);
// save a couple of customers
repository.save(new Customer("Jack", "Bauer"));
repository.save(new Customer("Chloe", "O'Brian"));
repository.save(new Customer("Kim", "Bauer"));
repository.save(new Customer("David", "Palmer"));
repository.save(new Customer("Michelle", "Dessler"));
// fetch all customers
Iterable<Customer> customers = repository.findAll();
System.out.println("Customers found with findAll():");
System.out.println("-------------------------------");
for (Customer customer : customers) {
System.out.println(customer);
}
System.out.println();
// fetch an individual customer by ID
Customer customer = repository.findOne(1L);
System.out.println("Customer found with findOne(1L):");
System.out.println("--------------------------------");
System.out.println(customer);
System.out.println();
// fetch customers by last name
List<Customer> bauers = repository.findByLastName("Bauer");
System.out.println("Customer found with findByLastName('Bauer'):");
System.out.println("--------------------------------------------");
for (Customer bauer : bauers) {
System.out.println(bauer);
}
context.close();
}
}
TIA, - 奧萊
你好Biju - 我試過'update'設置,但是數據庫在應用程序運行後仍然是空的。我知道這些值正在被選中,因爲如果我將它設置爲'none',那麼我會得到一個異常,表示客戶表不存在。思考? – Ole
奇怪的是,它似乎對我乾淨地工作!,我刪除了你的基於HikariCP的數據源,並保留默認與application.properties下面的項'spring.jpa.hibernate.ddl-auto = update spring.datasource.url = jdbc :h2:file:〜/ db1',並在運行結束時看到數據庫中的條目。 –
嗨Biju - 對不起,回覆晚。我最終將其設置爲none,通過Hibernate4 Maven插件生成模式,並通過h2控制檯將模式應用於h2。我現在也獲得記錄。 – Ole