Select 使用 Cayenne 的自定义数据 return 空行
Select Custom data with Cayenne return empty lines
我正在尝试 select 来自 2 个差异 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 行数据。
我该怎么办?
您应该设置 select.setFetchingDataRows(true)
,因为默认情况下 SQLTemplate
会尝试将结果转换为数据对象(在您的情况下为 DateInfo
)。
设置此标志后查询将 return List<DataRow>
和 DataRow
是普通 java.util.HashMap
.
的 Cayenne 内部扩展
我正在尝试 select 来自 2 个差异 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 行数据。
我该怎么办?
您应该设置 select.setFetchingDataRows(true)
,因为默认情况下 SQLTemplate
会尝试将结果转换为数据对象(在您的情况下为 DateInfo
)。
设置此标志后查询将 return List<DataRow>
和 DataRow
是普通 java.util.HashMap
.