使用 Cayenne 选择自定义数据返回空行
Posted
技术标签:
【中文标题】使用 Cayenne 选择自定义数据返回空行【英文标题】:Select Custom data with Cayenne return empty lines 【发布时间】:2017-08-27 17:41:42 【问题描述】:我正在尝试从 2 个 diff mysql 表中选择数据:
SELECT
SUM(TIMESTAMPDIFF(HOUR, startdatetime, enddatetime)),
SUM(TIMESTAMPDIFF(HOUR, startdatetime, enddatetime) * hourly),
SUM(CASE
WHEN TIME(startdatetime) BETWEEN '06:00:00' AND '12:00:00' THEN 'test',
SUM(CASE
WHEN TIMESTAMPDIFF(HOUR, startdatetime, enddatetime) <= 9 THEN 'TEST'
ELSE 'TEST2'
END)
FROM date, tarif
GROUP BY userid, MONTH(startdatetime), YEAR(startdatetime)
在我的代码中,我有:
SQLTemplate select = new SQLTemplate(DateInfo.class, query);
return CayenneUtil.getContext().performQuery(select);
我也试过了:
CayenneUtil.getContext().performGenericQuery(select).firstList()
但我收到了 4 行空行而不是 4 行数据。
我该怎么办?
【问题讨论】:
【参考方案1】:您应该将select.setFetchingDataRows(true)
设置为默认情况下SQLTemplate
将尝试将结果转换为数据对象(在您的情况下为DateInfo
)。
设置此标志后,查询将返回List<DataRow>
,而DataRow
是纯java.util.HashMap
的Cayenne 内部扩展。
【讨论】:
以上是关于使用 Cayenne 选择自定义数据返回空行的主要内容,如果未能解决你的问题,请参考以下文章
Apache Cayenne:处理 Postgresql 枚举类型