Отображение нескольких типов перечисления значений с аннотациями Hibernate

Чтобы сопоставить результат запроса Hibernate с пользовательским классом, содержащим перечисление, я должен сделать это в соответствии с этим постом, но я не хочу использовать имя поля перечисления, но одно из его нескольких значений:

Properties params = new Properties();
params.put("enumClass", "MyStatusEnum");
params.put("useNamed", true)

String sql = "SELECT "
    + "PRICE as price, "
    + "COMPANY as companyId, "
    + "NAME as name, "
    + "STATUS as statusEnum "
    + "FROM `FUC**** TABLE WITH SPACE`";

List <Item> items = session.createNativeQuert(sql) // Obliged to use this method 
// with deprecated transformer after because createQuery does not 
// recognize ` escape character and if I use session.createQuery(sql, Item.class), 
// Item is not recognized as an entity ...
    .addScalar(price) // Obliged to do it for all fields just because I need to do it for one field ?!
    .addScalar(companyId)
    .addScalar(name)
    .addScalar(statusEnum)
    .setResultTransformer(Transformers.aliasToBean(Item.class)).list();

1) Проблема для MyEnum.AVAILABLE, например, данные не будут "доступны", но int, так что это мое перечисление:

public enum MyEnum {
    AVAILABLE(0, 1),
    TO_SENT(1, null),
    ARCHIVED(2, null);

    private final int stateNum;

    private final Integer nextStateNum;

    MyEnum(int stateNum, Integer nextStateNum) {
        this.stateNum = stateNum;
        this.nextStateNum = nextStateNum;
    }
}

И я хочу сопоставить СОСТОЯНИЕ (возможные значения: 0, 1, 2) в БД не с именем, а с первым кодом атрибута (stateNum), как это сделать? Может я применить функцию, чтобы получить enum из кода?

Properties params = new Properties();
params.put("enumClass", "Foo.ProfileStateEnum");
params.put("???", "???");

2) Как получить документ о сопоставлении свойств с enum и о том, что для hibernate < 5, мы должны использовать params.put("type", "12"); где находится соответствующий документ?

Большое спасибо,

1 ответ

Ответ на 1): Отображение типов Enum с помощью Hibernate Пример - это трек, который я тестирую, но я бы не использовал аннотации, а код.

Ответ на 2): Класс Enum Type

Другие вопросы по тегам