JPA中关于枚举的设计
平常设计数据库时会遇到性别,状态等等其他一些枚举类型的字段。一般会有一个枚举表管理这些枚举,枚举表的字段有“关联的表名”、“关联字段名”、“枚举值”、“枚举名称”,实际存储在数据库中的是枚举值,但是在页面展现的经常用到的是枚举名称,如果是用普通SQL查询的话关联枚举表就出来,但是使用JPA,映射成实体类,这个要怎么设计呢,大神们给点意见。
一般如果枚举值是固定的话,如性别,把字段设计成枚举类型
class Person { ... private Gender gender; public enum Gender { male, female } }
如果gender是保存在枚举表里的
class Person { ... private Integer gender; }
从数据库查出Person,如何在界面显示gender为“男,女”?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
其实我想问的就是这种使用枚举字典的情况,查出来的对象不知道要怎么去进行枚举翻译
那是肯定。
那对于那种使用枚举字典的呢?字段就不好定义成枚举类型了
使用JPA映射,枚举在数据库中的字段存储不是枚举型,而是字符或数字类型的。使用注解@Enumerated,参数指定保存的值如果是字符类型的表示:
用数字表示:
其中,数字是用枚举的定义顺序表示的。在你的枚举值里male为0,female为1,以此类推。
用实体注解的写法示例如下:
至于如何显示“男”,“女”,把你的枚举类调整一下,person.gender.getName()就可以了。(同时建议你把枚举改为大写,把枚举类单独拿出来定义)