我问这个问题有点傻,但是我找不到这个问题的简单答案。
以这个简单的实体为例:
@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纯粹主义者都不会高兴:)
仔细搜索一下,我发现最佳实践是使用 枚举 。
我对如何使用它有些困惑。你能帮我举个例子吗?
您可以将您的号码映射enum到String或序号。映射到String是更可移植的方法,因为映射将在更改枚举顺序后仍然存在。
enum
String
使用您的示例:
@Entity @Table( name="clienti" ) public class Cliente implements Serializable { ... @Enumerated(EnumType.STRING) private Gender gender; ... }
字符串映射将使用枚举类型的简单名称,因此数据库中将有两个可能的值-“ Male”和“ Female”
public enum Gender { MALE, FEMALE }
持久性提供程序负责映射,因此在您的代码中,您可以继续使用Gender枚举,而不必担心字符串或序数。
Gender