Как исключить схему из hibernate auto ddl - PullRequest
0 голосов
/ 19 марта 2019

Я работаю над приложением весенней загрузки, которое должно подключиться к базе данных PostgresSql для чтения некоторых записей из таблицы TaskOne в схеме TaskReads и записи некоторых данных в TaskTwo таблица в схеме TaskWrites , поэтому я включил hibernate.auto.ddl для создания schemas и tables, если не существует и работает.

Проблема

Теперь проблема моя, так как мое приложение просто читает данные из TaskOne таблицы в TaskReads схеме Я не хочу выполнять какие-либо команды ddl, даже если схема итаблицы не существует.

И поскольку мое приложение вставляет записи в TaskTwo таблицу в TaskWrites схему Я отвечаю за создание схемы и таблицы, если она не существует.

TaskTwo сущность, которая только читает данные

@Entity
@Table(name = "TaskOne", schema = "TaskReads")
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Subselect(value = "")
@Immutable
public class TaskOneEntity {

@Column(name = "task_id")
@Id
private Long taskId;

 }

TaskTwo сущность записывает данные в таблицу

@Entity
@Table(name = "TaskTwo", schema = "TaskWrites")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Accessors(chain = true)
public class TaskTwoEntity {


@Column(name = "task_id")
@Id
private long taskId;

 }

Итакиспользуя аннотацию @Subselect я добился не создания таблицы, даже если она не существует, но все же она создает схему, если схема не существует в базе данных.

Как можно добиться исключения схемы в auto ddl?

1 Ответ

0 голосов
/ 19 марта 2019

Вы не можете достичь этого напрямую, поскольку hibernate.auto.ddl включает весь уровень базы данных, а не schema level

@ Subselect (value = "") делает объект доступным только для чтения и избегает создания таблицы.

@ Table (name = "TaskOne") В аннотации таблицы удалите часть schema, чтобы она проверяла схему по умолчанию (которая является общедоступной в postgresql) и не собиралась ничего делать еще если таблица и схема не существуют

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...