Вот упрощенная версия объекта и перечисления:
BlockItemEntity:
Код: Выделить всё
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "block_item", schema = "public")
public class BlockItemEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected long id;
@Column(length = 256)
private String title;
@Enumerated(EnumType.STRING)
private ContactTypeConstant contactType;
}
Код: Выделить всё
@RequiredArgsConstructor
@Getter
public enum ContactTypeConstant {
EMAIL(10, "email"),
PHONE(20, "phone");
private final long id;
private final String title;
}
Код: Выделить всё
ALTER TABLE block_item
ADD CONSTRAINT block_item_contact_type_check
CHECK ((contact_type)::text = ANY
((ARRAY ['EMAIL'::character varying, 'PHONE'::character varying])::text[]));
Код: Выделить всё
ERROR: new row for relation "block_item" violates check constraint "block_item_contact_type_check"
Я исследовал использование ALTER TABLE для удаления и повторного создания таблицы, обновления проверочное ограничение для включения новых значений перечисления. Хотя изначально я ожидал, что Hibernate будет обрабатывать такие обновления автоматически.
Подробнее здесь: https://stackoverflow.com/questions/774 ... fication-i
Мобильная версия