表作为枚举。可能吗?

时间:2016-04-04 08:09:03

标签: java hibernate jpa enums

如何将静态表(不可扩展)映射到Java中的枚举并将此表绑定到另一个表?

例如,我有一个简单的计算器网络应用程序(spring web MVC + hibernate),其中包含一个表(用户计算结果),其中包含以下字段:id (PK)leftOperand,{{1} },operationrightOperand

我想创建一个新的静态表(我的​​意思是基本算术运算,如resultPLUSMINUSDIVIDE),包含2个字段:{{ 1}})和MULTIPLY,并将此表映射到Java中的枚举。

那么如何绑定这两个表(使用id(PK字段)? 一些伪代码非常感谢。

请注意,我不需要为静态表创建一个hibernate实体。只是枚举。

2 个答案:

答案 0 :(得分:1)

与类一样,您可以向枚举添加属性,如下所示:

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;
    }

}

假设'opreration'字段与enum的name匹配,您可以执行以下操作:

MyEnum enumValue = MyEnum.valueOf(map.get("operation"));

答案 1 :(得分:1)

我认为您不需要静态表来获取操作值。只需将operation字段类型更改为枚举,然后使用@Enumerated

enum Operation {
    PLUS, MINUS;
}

@Entity
public class Calculation {

    private String leftOperand;

    @Enumerated(EnumType.STRING)
    private Operation operation;

    private String rightOperand;

}