【发布时间】:2018-05-29 18:22:08
【问题描述】:
所以,我的问题是下一个。如何将数据库中的枚举类型映射为表。我想要一个包含我的 Enum 值的表。我想在数据库中有这样的结构:Model
以及代码中类的这种结构:
@Entity
public class MainEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@NotNull
@Column
private Integer id;
@Column
private Enum enum;
@NotNull
@Column
private String any_other_attribute;
}
public enum Enum implements Serializable {
First, Second, Third
}
【问题讨论】:
-
Java SE 枚举类型已嵌入
Serializable。事实上,JVM 提供了坚如磐石的保证,即您的常量始终保持实例受控。您不应该将枚举类型声明为Serializable -
@scottb Java 枚举值实际上是可序列化的,而不是它可能包含的字段。这个问题您可能会感兴趣:stackoverflow.com/questions/15521309/…。现在我认为在枚举中包含可变字段是一种反模式,但这是另一回事......
-
将枚举序数存储为查找表并不是一个好主意,因为这样会在 Java 和数据库中复制信息。如果您真的想这样做,请不要使用枚举,而只需使用具有 id 和名称的实体。