В качестве базовой линии я использую демо-версию 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
Здравствуйте, Biju. Я попробовал параметр «update», однако после запуска приложения база данных остается пустой. Я знаю, что значения подбираются, потому что, если я установил его ton 'none', то получаю исключение, говорящее, что таблица Customer не существует. Мысли? – Ole
Странно, это работает для меня чисто !, я удалил ваш источник данных на основе HikariCP и сохранил значение по умолчанию со следующими записями в application.properties 'spring.jpa.hibernate.ddl-auto = update spring.datasource.url = jdbc : h2: file: ~/db1', и я вижу записи в базе данных в конце прогона. –
Привет Бижу - Извините за поздний ответ. Я закончил тем, что установил его «none», генерируя схему через плагин Hibernate4 Maven и применяя схему к h2 через консоль h2. Теперь я получаю записи. – Ole