работа с enum на querydsl

Я использую querydsl-jpa, и у меня есть объект с именем DataSourceColumn с членом Enum:

    @Enumerated(EnumType.STRING)
    @Column(name="COULMN_TYPE")
    private eColumnType columnType;

При попытке запросить этот объект:

    QDataSourceColumn qDataSourceColumn = QDataSourceColumn.dataSourceColumn;
    JPAQuery query = new JPAQuery(entityManager);        
    List<DataSourceColumn> kpis = query.from(qDataSourceColumn)
        .where(qDataSourceColumn.columnType.eq(eColumnType.HEAD)))
        .list(qDataSourceColumn);

Я получаю пустой список. При попытке выбрать его напрямую, как

    SELECT * FROM DATA_SOURCE_COLUMN WHERE column_type = 'HEAD'

Я получаю требуемые результаты. Мне кажется, что я неправильно использую запрос по перечислению - как это исправить?

Изменить: сгенерированный JPQL

select dataSourceColumn
from DataSourceColumn dataSourceColumn
where dataSourceColumn.columnType = ?1

person yishaiz    schedule 22.09.2014    source источник
comment
Попробуйте записать вывод query.from(qDataSourceColumn).where(qDataSourceColumn.columnType.eq(eColumnType.HEAD))).toString(). Вы получите JPQL, который выполняет QueryDSL.   -  person jmvivo    schedule 22.09.2014
comment
@jmvivo, я добавил это к вопросу. Мне кажется нормально...   -  person yishaiz    schedule 23.09.2014
comment
Я тоже. Вы можете попытаться активировать журналы ORM-Implementation, чтобы получить больше информации.   -  person jmvivo    schedule 23.09.2014


Ответы (1)


Так что я решил это - проблема была как-то в БД - не знаю почему.

Я использовал PostgreSql, и это не сработало. Затем я попробовал это на SQL Server, и это сработало. Я проверил, и не было никакой разницы в определении столбца между двумя базами данных. И ошибка возникла только с Enum, использующим QueryDsl.

Итак, я удалил таблицу DataSourceColumn из PostgreSql и позволил Hibernate автоматически сгенерировать таблицу из сущности — и тогда это сработало.

person yishaiz    schedule 23.09.2014
comment
Это ошибка в вашем посте или у вас действительно есть эта аннотация @Column(name="COULMN_TYPE") вместо этой: @Column(name="COLUMN_TYPE") ? - person Bludwarf; 04.05.2017
comment
Если вы имеете в виду опечатку COULMN, то я не могу полностью это вспомнить, но я думаю, что это была ошибка. - person yishaiz; 04.05.2017