gpt4 book ai didi

hibernate - JPA 实体中的枚举字段

转载 作者:行者123 更新时间:2023-12-03 06:41:05 27 4
gpt4 key购买 nike

我觉得问这个问题有点愚蠢,但我找不到这个问题的任何简单答案。

以这个简单的实体为例:

@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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com