gpt4 book ai didi

java - 如何在 hibernate 中将枚举序号映射到它的值?

转载 作者:太空宇宙 更新时间:2023-11-04 06:47:14 24 4
gpt4 key购买 nike

我有 2 个数据库表:

  1. 保留一个类,该类有一个类型为枚举的字段。在相应的列中,存储枚举值的序数。
  2. 保留枚举值的序号和名称。

如何使用 Hibernate 映射将表 1 中的枚举序数映射到表 2 中存储的名称?

编辑:基本上,通过 SQL SELECT,我将使用序号连接 2 个表来获取名称。不过,我不确定如何在 hibernate 状态下做到这一点。

这不是重复的;我没有使用 Hibernate 逆向工程。

最佳答案

您可以将 Java 端设置为:

@Enumerated(EnumType.ORDINAL)
@Column(name = "user_type")
private UserType userType;

public enum UserType {
CLIENT,
ADMIN;
}

和 SQL 端: 创建表用户( id bigint 主键, user_type bigint NOT NULL );

CREATE TABLE enum_user_type (
id bigint PRIMARY KEY,
name varchar(255),
desc text
);

ALTER TABLE user ADD CONSTRAINT user_type_fk FOREIGN KEY (user_type) REFERENCES enum_user_type(id);


INSERT INTO enum_user_type (id, name, desc) VALUES ( 0, 'CLIENT', 'This is a client');
INSERT INTO enum_user_type (id, name, desc) VALUES ( 1, 'ADMIN', 'This is an admin');

所以在java中你总是设置:

user.setUserType(UserType.ADMIN);

在用户表中,枚举使用序号存储。

由于您已经有一个枚举关联表,因此您可以在具有 native 查询的 SQL JOIN 中使用它。

如果您发现需要使用 HQL 来获取枚举名称或描述,那么也许应该将枚举提升为实体。

关于java - 如何在 hibernate 中将枚举序号映射到它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23815897/

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