一尘不染

JPA实体中的枚举字段

hibernate

我问这个问题有点傻,但是我找不到这个问题的简单答案。

以这个简单的实体为例:

@Entity
@Table( name="clienti" )
public class Cliente implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    private String nome;

    private String cognome;

//...
}

它代表一个人,因此我想添加一个“ 性别 ”属性。

这将是“男性”或“女性”。所以呢?

我可以使用String,并要记住,“ m”代表男性,“ f”代表女性。

或者,我可以使用布尔值“ isMale”(是或否)。

但是,我认为无论哪种情况,Hibernate纯粹主义者都不会高兴:)

仔细搜索一下,我发现最佳实践是使用 枚举

我对如何使用它有些困惑。你能帮我举个例子吗?


阅读 412

收藏
2020-06-20

共1个答案

一尘不染

您可以将您的号码映射enumString或序号。映射到String是更可移植的方法,因为映射将在更改枚举顺序后仍然存在。

使用您的示例:

@Entity
@Table( name="clienti" )
public class Cliente implements Serializable {

...
    @Enumerated(EnumType.STRING)
    private Gender gender;
...
}

字符串映射将使用枚举类型的简单名称,因此数据库中将有两个可能的值-“ Male”和“ Female”

public enum Gender { MALE, FEMALE }

持久性提供程序负责映射,因此在您的代码中,您可以继续使用Gender枚举,而不必担心字符串或序数。

2020-06-20