Играть! JPA - получить значение enum в запросе - PullRequest
2 голосов
/ 07 июня 2011

Это мое перечисление:

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

}

У меня есть сеанс класса моделей с типом атрибута:

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

И я хотел бы сделать такой запрос:

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

С уважением.

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Вы не можете получить доступ к значению внутри перечисления через SQL-запрос, но вы можете просто использовать порядковое значение перечисления, чтобы сохранить его в базе данных с аннотацией:

@Enumerated(EnumType.ORDINAL)

Это будетвернуть 1, 2 или 3 прямо сейчас, но вы можете либо переназначить значения (поэтому вместо 1,5,12 вы используете 1,2,3), либо просто добавить несколько дополнительных записей в перечисление, пока не получите значения, которые хотите (если для остальной системы это так важно, чтобы значения были 1,5,12)

1 голос
/ 07 июня 2011

По умолчанию имя enum хранится в БД, если у вас нет какой-либо оболочки или чего-то, что сохраняет фактическое значение.

Поэтому ваш запрос должен выглядеть примерно так:

Session.find("type='SESSION_SOLO'");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...