【发布时间】:2014-09-22 07:10:51
【问题描述】:
我正在使用 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
【问题讨论】:
-
尝试记录
query.from(qDataSourceColumn).where(qDataSourceColumn.columnType.eq(eColumnType.HEAD))).toString()的输出。您将获得 QueryDSL 正在执行的 JPQL。 -
@jmvivo,我将其添加到问题中。对我来说似乎没问题...
-
我也是。您可以尝试激活 ORM 实现日志以获取更多信息。