Пользовательское имя перечисления Hibernate в базе данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пользовательское имя перечисления Hibernate в базе данных

Сообщение Anonymous »

У меня возникла проблема с сопоставлением JPA с перечислениями схемы моей базы данных.
Моя база данных Postgres содержит перечисление типа:

Код: Выделить всё

CREATE TYPE segment_type AS ENUM ('SEG1', 'SEG2');
Сущность JPA выглядит следующим образом:

Код: Выделить всё

@Entity(name = "entity_segments")
public class EntitySegment {

@Id
@Column(name = "my_id")
private UUID myId;

@Column(name = "segment_type", columnDefinition = "segment_type")
@ColumnDefault("'SEG1'")
@Enumerated(EnumType.STRING)
@JdbcType(PostgreSQLEnumJdbcType.class)
SegmentType segmentType = SegmentType.SEG1;
}
Соответствующий класс перечисления прост:

Код: Выделить всё

public enum SegmentType {
SEG1,
SEG2
}
Все работает нормально, если я создаю схему базы данных с помощью SQL-скриптов (Flyway). Однако, если я отключу Flyway и позволю JPA создавать объекты и запускать службу, JPA будет жаловаться на отсутствие сегмента, поскольку он создал перечисление типа сегмента:

Код: Выделить всё

Caused by: org.postgresql.util.PSQLException: ERROR: type "segment_type" does not exist
Как я могу указать JPA использовать/создать вместо этого базу данных enum slot_type?

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»