如何序列化一组枚举



是否可以在没有自定义属性转换器的情况下序列化一组枚举?

@Entity
public class SomeEntity {
    @Id
    @GeneratedValue
    private Integer id;
    private Set<DayOfWeek> days;
}

天数集必须与某个实体位于同一表中。

我正在使用 Spring Data JPA 1.9 和 Hibernate 4.3.1。谢谢。

眠存储所有声明实现Serializable的类型的属性。

但是您的days属性的类型是 Set它不会扩展Serializable 。要将集合存储为序列化值,您需要声明一个实现Serializable的集合类 - 就像大多数人一样。例如HashSet

@Entity
public class SomeEntity {
    private HashSet<DayOfWeek> days;
}

您不需要任何进一步的注释。这适用于Enum和所有其他可序列化元素。

但是对于一组枚举,存在另一种选择:使用 EnumSet,它将值存储到整数列中(每个枚举值正好是一位(。在这里看我的答案: JPA 地图集合的枚举

Enum 具有可序列化为超级接口(参见 Javadoc API 文档了解枚举(

因此,Hibernate(不需要可序列化(或Spring Data JPA应该没有任何特定问题。

最新更新