Как сохранить Enum в БД используя JPA? – Devcolibri

  • Автор темы Lucania
  • 25
  • Обновлено
  • 12, Jun 2023
  • #1
Для сохранения Enum в базе данных с использованием JPA (Java Persistence API), вы можете использовать аннотацию
 @Enumerated
в связке с соответствующим типом поля в вашей сущности. Вот пример, как можно сохранить Enum в БД с помощью JPA:
  • Определите ваш Enum с соответствующими значениями:


javaCopy code
 public enum Status {

ACTIVE,

INACTIVE,

PENDING
}

  • В вашей сущности, где вы хотите сохранить Enum, используйте аннотацию
     @Enumerated
    :


javaCopy code
 @Entity
@Table(name = "your_table")
public class YourEntity {

// ...

@Enumerated(EnumType.STRING)

@Column(name = "status")

private Status status;

// ...
}
Здесь
 EnumType.STRING
указывает, что Enum будет сохраняться в виде строки в базе данных.

Вы также можете использовать
 EnumType.ORDINAL
, чтобы сохранять Enum в виде числового значения (порядкового номера Enum).
  • При сохранении экземпляра вашей сущности, JPA автоматически преобразует Enum в соответствующее значение для сохранения в БД. Например:


javaCopy code
 YourEntity entity = new YourEntity();
entity.setStatus(Status.ACTIVE);
entityManager.persist(entity);

  • При получении сущности из БД, JPA автоматически преобразует значение из БД обратно в Enum. Например:


javaCopy code
 YourEntity entity = entityManager.find(YourEntity.class, id);
Status status = entity.getStatus();
Важно убедиться, что в БД существует соответствующий столбец, который может хранить значения Enum.

Если столбец уже существует, убедитесь, что его тип данных соответствует типу Enum (например, VARCHAR для хранения в виде строки). Таким образом, с использованием аннотации
 @Enumerated
вы можете сохранить Enum в БД с помощью JPA и получать его обратно при получении сущности из БД.

Lucania


Рег
02 Feb, 2023

Тем
27158

Постов
27328

Баллов
298908
Тем
49554
Комментарии
57426
Опыт
552966

Интересно