таблицы усекаются с помощью «spring.jpa.hibernate.ddl-auto» для проверки - PullRequest
0 голосов
/ 07 ноября 2019

Примечание: Spring Boot 2.1.10 + Spring Cloud Greenwich.SR3

У меня есть две JPA-службы Spring Data, которые обращаются к одной внешней базе данных (MySQL) и совместно используют общий домен:

@Entity
@Data
public class Person {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "first_name") @NotNull
    private String firstname;
    private LocalDate birth;
    private Integer votes = 0;
}

В первый сервис (производитель) я добавил data.sql для вставки образцов:

insert into person(first_name) values ('foobar');
insert into person(first_name) values ('scoubidou');

И следующие свойства:

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.initialization-mode=always

Во второй сервис (потребитель) Я просто хочу использовать схему, не изменяя ее при запуске, поэтому я использовал эти свойства:

spring.jpa.hibernate.ddl-auto=validate
spring.datasource.initialization-mode=never

При запуске производителя схема БД создается и заполняется образцами сущностей. Но когда я запускаю потребителя, таблица сущностей усекается. Кто-нибудь знает, как стол опустошится и как этого избежать, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Это свойство в конечном итоге решило проблему:

spring.jpa.properties.hibernate.hbm2ddl.auto=validate

Может быть, существует неверное соединение с spring.jpa.hibernate.ddl-auto?

0 голосов
/ 07 ноября 2019

Не используйте create-drop в службе производителя. Read this

  • none: значение по умолчанию для MySQL. В структуру базы данных не вносятся изменения.

  • обновление: Hibernate изменяет базу данных в соответствии с заданными структурами сущностей.

  • create: создает базу данных каждый разно не сбрасывает его при закрытии.
  • create-drop: создает базу данных и удаляет ее при закрытии SessionFactory.

пытается использовать create только

spring.jpa.hibernate.ddl-auto=create
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...