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 内部扩展