Выберите «Пользовательские данные» с возвратом Cayenne пустых строк.

Я пытаюсь выбрать данные из двух таблиц 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 строк с данными.

Что я должен делать?


person Bob    schedule 27.08.2017    source источник


Ответы (1)


Вы должны установить select.setFetchingDataRows(true), так как по умолчанию SQLTemplate попытается преобразовать результат в объекты данных (DateInfo в вашем случае). После этого запрос с установленным флагом вернет List<DataRow>, а DataRow является внутренним расширением Cayenne для простого java.util.HashMap.

person Nikita    schedule 28.08.2017