使用 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&lt;DataRow&gt;,而DataRow 是纯java.util.HashMap 的Cayenne 内部扩展。

【讨论】:

以上是关于使用 Cayenne 选择自定义数据返回空行的主要内容,如果未能解决你的问题,请参考以下文章

Big Query 过滤自定义查询创建表的空行

Apache Cayenne:处理 Postgresql 枚举类型

编写自定义函数,求水仙花数,并输出

c语言编程利用自定义函数求两个数的和

KendoUI Grid:自定义编辑表单,日期选择器返回错误格式

如果记录数小于详细信息部分中定义的行,如何插入空行