使用休眠注释映射枚举类型

2022-09-01 04:19:33

我的Java模型上有一个枚举类型,我想将其映射到数据库上的表。我正在使用Hibernate Annotations,我不知道该怎么做。由于我搜索的答案相当陈旧,我想知道哪种方式最好?

提前致谢


答案 1

除了@Enumerated注释之外,您还需要其他东西吗?例如,以下枚举:

public enum MyEnum { 
    VALUE1, VALUE2; 
}  

可以像这样使用和注释:

private MyEnum myEnum;
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
}

您可以使用批注的 enum 属性指定枚举应如何保留在数据库中。 指定枚举将保留为整数值。在这里,设置为将保留为 0、1 等。EnumType@EnumeratedEnumType.ORDINALmyEnumVALUE1VALUE2

另一种方法是使用来指定将使用字段设置为的枚举值的名称来持久保存枚举。因此,应用于前面的示例,将字段设置为 将保留为 ,等等。EnumType.STRINGmyEnumMyEnum.VALUE1VALUE1


答案 2
public enum OrderStatus {

    ORDER_CREATED,ORDER_COMPLETED,ORDER_CANCELLED
}

@Entity 
public class PurchaseOrder {
    
    @Enumerated(EnumType.STRING)
    private OrderStatus orderStatus;
    
}

这是一个引用的数据类型(java对象),现在你想在数据库中持久化它,但是不可能直接将java对象持久化到数据库中,现在这里进入图片,将该java对象转换为String,以便它可以持久化到数据库中。OrderStatusOrderStatus@Enumerated(EnumType.STRING)OrderStatus