2015-01-08 9 views
0

В качестве базовой линии я использую демо-версию Spring Boot Accessing Data JPA.Spring Boot JPA & H2 Records не сохраняется

Моя цель - иметь возможность просматривать сохраненные объекты с помощью консоли 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(); 
    } 

} 

ТИА, - Ole

ответ

1

По умолчанию конфигурация базы данных JPA устанавливается для создания таблиц в начале и падение в конце. Это может быть изменено с помощью следующей записи в файле application.properties:

spring.jpa.hibernate.ddl-auto=update 

См ссылку here.

+0

Здравствуйте, Biju. Я попробовал параметр «update», однако после запуска приложения база данных остается пустой. Я знаю, что значения подбираются, потому что, если я установил его ton 'none', то получаю исключение, говорящее, что таблица Customer не существует. Мысли? – Ole

+1

Странно, это работает для меня чисто !, я удалил ваш источник данных на основе HikariCP и сохранил значение по умолчанию со следующими записями в application.properties 'spring.jpa.hibernate.ddl-auto = update spring.datasource.url = jdbc : h2: file: ~/db1', и я вижу записи в базе данных в конце прогона. –

+0

Привет Бижу - Извините за поздний ответ. Я закончил тем, что установил его «none», генерируя схему через плагин Hibernate4 Maven и применяя схему к h2 через консоль h2. Теперь я получаю записи. – Ole

Смежные вопросы