Mam model kategorii 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;
które mają pole typu string. Mam również wyliczenie Java, które reprezentuje typ kategorii:
public enum CategoryType {
INCOME, OUTCOME;
}
którego chciałbym użyć zamiast typu string. SQL akceptuje dwie różne wartości parametru varchar: albo CategoryIncome
lub CategoryOutcome
. Chciałbym, aby klasa modelu Category akceptowała zmienną wyliczeniową - i odwzorowywała ją w jakiś sposób na łańcuch, gdy zażąda tego hibernacja.
Czy to możliwe?
@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
trybie i musiałem upuścić stół i pozwolić hibernacji utworzyć go ponownie, aby przekonwertować wyliczenie z int na varchar. Mam nadzieję, że pomoże to komuś z podobnym problemem.Zaakceptowana odpowiedź nie jest wystarczająca dla PostgreSQL . Załączam implementację, która u mnie zadziałała:
https://stackoverflow.com/a/64021041/5279996
źródło