Java 表作为枚举。可能吗?
如何将静态表(不可扩展)映射到Java中的枚举,并将此表绑定到另一个表 例如,我有一个简单的计算器web应用程序(SpringWebMVC+hibernate),其中有一个表(用户的计算结果),该表有以下字段:Java 表作为枚举。可能吗?,java,hibernate,jpa,enums,Java,Hibernate,Jpa,Enums,如何将静态表(不可扩展)映射到Java中的枚举,并将此表绑定到另一个表 例如,我有一个简单的计算器web应用程序(SpringWebMVC+hibernate),其中有一个表(用户的计算结果),该表有以下字段:id(PK),leftOperator,operation,righOperator,result 我想创建一个新的静态表(我的意思是用于基本的算术运算,如加号,减号,除号,乘号),有两个字段:id(PK)和运算,并将此表映射到Java中的enum 那么如何绑定这两个表(使用操作字段)?
id(PK)
,leftOperator
,operation
,righOperator
,result
我想创建一个新的静态表(我的意思是用于基本的算术运算,如加号
,减号
,除号
,乘号
),有两个字段:id(PK
)和运算
,并将此表映射到Java中的enum
那么如何绑定这两个表(使用操作字段)?
一些伪代码非常受欢迎
注意,我不需要为静态表创建hibernate实体。只需枚举。与类一样,您可以向枚举添加属性,如下所示:
public enum MyEnum {
PLUS(1, "something"),
MINUS(2, "something");
private final int id;
private final String string;
private MyEnum(int id, String string){
this.id = id;
this.string = string;
}
public int getId(){
return id;
}
public String getString(){
return string;
}
}
假设“操作”字段与枚举的名称匹配,则可以执行以下操作:
MyEnum enumValue = MyEnum.valueOf(map.get("operation"));
我认为操作值不需要静态表。只需将操作
字段类型更改为enum并使用@Enumerated
enum Operation {
PLUS, MINUS;
}
@Entity
public class Calculation {
private String leftOperand;
@Enumerated(EnumType.STRING)
private Operation operation;
private String rightOperand;
}
是的,这很简单。但有没有办法让一个单独的表映射到enum并绑定到主表?@stryker我认为没有办法做到这一点。为enum提供单独的静态表似乎没有任何意义。原因有二:将表映射到enum并将这些表相互绑定,这不是真正的web应用程序。这只是为了测试,我想知道它是如何工作的。谢谢,我们需要为希望在SQL中执行所有操作的团队成员使用表来支持所有枚举…因此,您将在Java中拥有一个具有id到字符串映射的枚举,但您也希望在数据库中保留完全相同的信息?!因此有重复。(对我来说)你为什么要那样做毫无意义。有人可能会进来同时更新Java枚举映射,然后它们就不一致了。。。