作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我觉得问这个问题有点愚蠢,但我找不到这个问题的任何简单答案。
以这个简单的实体为例:
@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;
//...
}
它代表一个人,所以我想添加一个“性别”属性。
它将是“男性”或“女性”。那又怎样?
我可以使用字符串,并记住“m”代表男性,“f”代表女性。
或者我可以使用 bool 值“isMale”,true 或 false。
但是,我认为在这两种情况下 Hibernate 纯粹主义者都不会高兴:)
谷歌搜索了一下,我发现最佳实践是使用枚举。
我对如何使用它有点困惑。你能帮我举个例子吗?
最佳答案
您可以将枚举
映射到字符串
或序数。映射到 String
是更可移植的方法,因为映射将在更改枚举顺序后继续存在。
使用您的示例:
@Entity
@Table( name="clienti" )
public class Cliente implements Serializable {
...
@Enumerated(EnumType.STRING)
private Gender gender;
...
}
字符串映射将使用枚举类型的简单名称,因此数据库中将有两个可能的值 - 'Male' 和 'Female'
public enum Gender { MALE, FEMALE }
持久性提供程序负责映射,因此在您的代码中,您可以继续使用 Gender
枚举,而不必担心字符串或序号。
关于hibernate - JPA 实体中的枚举字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437384/
我是一名优秀的程序员,十分优秀!