0

请看一下我以前的问题以了解背景。

枚举列表与布尔值类

但是,我的问题是枚举集如何与 JPA 2.0 和数据库一起使用。由于我可能会将值保存为字符串(因为我不想冒险丢失映射),因此与 bool 类相比,集合中大于 20 个枚举的枚举集可能是存储数据的一种非常无效的方式。

考虑具有不同角色的用户表:

user | password | role (enum)
adm    1223       admin, guest, www, lab, elevator, ap, // Might be more than > 20
sam    0000       admin

…………

我应该选择什么?你有什么想法?

此致

4

2 回答 2

3

上述数据库设计不是您应该为用户存储角色的方式。它没有被规范化(因为您在单个列中有多个值),因此很难查询。例如,您将如何查询以了解所有具有角色的guest用户ap

将设计更改为以下内容:

user table : id, name, passord
role table: id, name
user_role join table: user_id, role_id

在 JPA 术语中,您只需拥有一个User实体、一个Role实体以及ManyToMany这些实体之间的关联:一个用户有 0、1 个或多个角色,而一个角色由 0、1 个或多个用户持有。

于 2012-08-02T07:18:41.640 回答
0

如果您想以相对较小的二进制形式存储信息,我会选择EnumSet,如果您希望能够按类型查询,那么我会选择@ElementCollection.

于 2012-08-03T02:02:58.963 回答