相关疑难解决方法(0)

如何在数据库中保存枚举

将枚举保存到数据库的最佳方法是什么?

我知道Java提供name()valueOf()方法来枚举值转换为字符串和背部.但是有没有其他(灵活的)选项来存储这些值?

有没有一种聪明的方法可以将枚举变成唯一的数字(ordinal()使用起来不安全)?

更新:

感谢所有令人敬畏和快速的答案!这是我怀疑的.

但请注意"工具包"; 这是一种方式.问题是我必须为我创建的每个Enum类型添加相同的方法.这是很多重复的代码,目前,Java不支持任何解决方案(Java枚举不能扩展其他类).

java database enums

115
推荐指数
7
解决办法
9万
查看次数

根据数据库查找表中的值自动创建枚举?

如何根据数据库查找表中的值(使用企业库数据层)自动创建枚举并随后在C#中使用其值?

例如,如果我在数据库中添加一个新的查找值,我不想在代码中手动添加额外的静态枚举值声明 - 我想让枚举与数据库保持同步.

有这样的事吗?


我不想创建代码生成的静态枚举(根据代码项目文章枚举代​​码生成器 - 从数据库查找表自动生成枚举代码),并希望它是完全自动的.

c# database enums dynamic

107
推荐指数
8
解决办法
12万
查看次数

枚举数据库中的常量和动态值

我有一个当前状态,其中enumMyType表示类型表,其列为:

ID
Name
Run Code Online (Sandbox Code Playgroud)

并使用ID参数和byId方法来识别类型:

public enum MyType {

FIRST_TYPE("First Type", 10),
SECOND_TYPE("Second Type", 20);
public static class Holder {
    static Map<Integer, MyType > idMap = new HashMap<>();
    private Holder() { }
}

private MyType(String name, Integer id) {
    this.name = name;
    this.id = id;
    Holder.idMap.put(id, this);
}

public String getName() {
    return name;
}

public static MyType byId(Integer id) {
    return Holder.idMap.get(id);
}
Run Code Online (Sandbox Code Playgroud)

我的新要求是支持Type表中也存在值,我找到了动态枚举的答案,但是接受答案不是这样做

否。枚举始终固定在编译时。您执行此操作的唯一方法是动态生成相关的字节码。

从数据库(例如ID 30)中查找值(主要是ID)的更好解决方案是什么

 select ID from TYPE
Run Code Online (Sandbox Code Playgroud)

我可以 …

java enums database-driven

-3
推荐指数
2
解决办法
373
查看次数

标签 统计

enums ×3

database ×2

java ×2

c# ×1

database-driven ×1

dynamic ×1