Отображение перечисления в строку в спящем режиме

У меня есть модель Hibernate категории:

@Entity
@Table(name = "category")
public class Category {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "type")
    private String type;

которые имеют поле строки типа. Также у меня есть перечисление Java, представляющее тип категории:

public enum CategoryType {
    INCOME, OUTCOME;
}

который я хотел бы использовать вместо строкового типа. SQL принимает два различных значения в параметре varchar: либо CategoryIncome, либо CategoryOutcome. Я хотел бы, чтобы класс модели категории принимал переменную enum и сопоставлял ее как-то со строкой всякий раз, когда hibernate запрашивает ее.

Возможно ли это?

Ответ 1

Да, возможно. Это должно быть:

@Enumerated(EnumType.STRING)
@Column(name = "category_type")
private CategoryType categoryType;

Ответ 2

Класс enum

 public enum LevelPriority{

        HIGH, MEDIUM, LOW
 }

Класс Java

  public class AvisosVO implements Serializable {
    /**
     * 
     */
      private static final long serialVersionUID = 5372875132849315024L;
      @Id
      @GeneratedValue
      @Column(name = "id")
      private Integer idAVisosVO;
      private LevelPriority priority;

      @Enumerated(EnumType.STRING)
      public LevelPriority getPriority() {
        return priority;
      }

BD

   CREATE TABLE `Avisos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `priority` int(4) NOT NULL,
   PRIMARY KEY (`id`)
  ) 

У меня был этот код в проекте, и он работает. Надеюсь, этот пример объяснит ваш вопрос лучше, чем верхний комментарий.