玩! JPA - 在查询中获取枚举值

时间:2011-06-07 09:13:05

标签: java jpa enums playframework

这是我的枚举:

package enums;

public enum SessionType {
    SESSION_NORMAL(12), SESSION_PERFECT(5), SESSION_SOLO(1);

    private int value;

    private SessionType(int value) {
        this.setValue(value);
    }

    public void setValue(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public String toString(){
        return this.name();
    }

}

我有一个带有属性类型的模型类Session:

@Required
@Enumerated(EnumType.STRING)
@Column(name="type")
private SessionType type;

我想这样做一个查询:

Session.find("type.value = 1");

问候。

2 个答案:

答案 0 :(得分:1)

默认情况下,枚举名称存储在数据库中,除非您有一些包装器或保存实际值的东西。

因此,您的查询应该类似于以下内容:

Session.find("type='SESSION_SOLO'");

答案 1 :(得分:1)

您无法通过SQL查询访问枚举中的值,但您可以使用枚举的Ordinal值将其存储在带有注释的数据库中:

@Enumerated(EnumType.ORDINAL)

现在会返回1,2或3,但你可以重新映射这些值(所以代替1,5,12你使用1,2,3)或者只是在枚举中添加一些额外的条目,直到你得到你想要的值(如果它对系统的其余部分如此重要,那么值为1,5,12)