У меня есть модель спящего режима категории:
@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
. Я хотел бы, чтобы класс модели Category принимал переменную enum и каким-то образом сопоставлял ее со строкой, когда hibernate запрашивает ее.
Является ли это возможным?
@Converter(autoApply = true) public class CategoryTypeConverter implements javax.persistence.AttributeConverter <CategoryType, String>
@Enumerated(EnumType.STRING) public CategoryType getCategoryType() { return this.categoryType; }
.hibernate.ddl-auto=update
режиме, и мне пришлось отбросить свою таблицу и позволить спящему режиму создать ее снова, чтобы преобразовать мое перечисление из int в varchar. Надеюсь, это поможет кому-то с подобной проблемой.Принятого ответа для PostgreSQL недостаточно . Прилагаю ту реализацию, которая у меня сработала:
https://stackoverflow.com/a/64021041/5279996
источник