0

我正在尝试从 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 行数据。

我应该怎么办?

4

1 回答 1

1

您应该设置select.setFetchingDataRows(true)为默认情况下SQLTemplate会尝试将结果转换为数据对象(DateInfo在您的情况下)。设置此标志后,查询将返回List<DataRow>并且DataRow是普通的 Cayenne 内部扩展java.util.HashMap

于 2017-08-28T07:18:46.240 回答