Вот экземпляр запроса я выполнениеjavax.persistence.Query не установлен параметр
entityManager.createNativeQuery(SHIPMENTS_UNION_QUERY, RESULT_MAPPER)
.setParameter("aggreagateCategories", aggregatePCNames)
.setParameter("startDate", startDate)
.setParameter("endDate", endDate)
.setParameter("individualCategories", individualPCNames)
.getResultList();
Бревна для выполнения указанных выше линий
12:29:36.909 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 2010-01-01 -> endDate [3]
12:29:36.910 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 2010-01-01 -> endDate [6]
12:29:36.910 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 'AirConditioner' -> aggreagateCategories [1]
12:29:36.912 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 2010-01-01 -> startDate [2]
12:29:36.912 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 2010-01-01 -> startDate [5]
12:29:36.912 DEBUG org.hibernate.loader.Loader : bindNamedParameters() 'Cooler', 'Heater', 'Dryer' -> individualCategories [4]
Когда вышеупомянутый запрос выполненный с параметром hardcoded в самом запросе, запрос выполняется просто отлично, и результаты извлекаются и сопоставляются с RESULT_MAPPER, что соответствует @SqlResultSetMapping, но когда это делается с указанными выше операторами setParameter, выполнение не отменяет никаких результатов.
Пожалуйста, помогите определить проблему.
EDIT1
Запрограммированные Запрос
SELECT ac.category_name category_name, SUM(ais.volume) volume, qc.date, qc.quarter as quarter, qc.year
FROM actual_industry_shipment ais
JOIN quarter_calendar qc ON ais.quarter=qc.id
JOIN product_category pc ON ais.product_category_id=pc.id
JOIN aggregated_product_categories ac ON ac.id = pc.aggregate_category_id
WHERE ac.category_name IN ('AirConditioner')
AND qc.date BETWEEN '2010-01-01' AND '2011-01-01'
GROUP BY pc.aggregate_category_id, qc.quarter, qc.year
UNION
SELECT pc.category_name category_name, ais.volume volume, qc.date, qc.quarter as quart, qc.year
FROM actual_industry_shipment ais
JOIN quarter_calendar qc ON ais.quarter=qc.id
JOIN product_category pc ON ais.product_category_id=pc.id
WHERE pc.category_name IN ('Dryer', 'Cooler')
AND qc.date BETWEEN '2010-01-01' AND '2011-01-01'
Запрос с Params
SELECT ac.category_name category_name, SUM(ais.volume) volume, qc.date, qc.quarter as quarter, qc.year
FROM actual_industry_shipment ais
JOIN quarter_calendar qc ON ais.quarter=qc.id
JOIN product_category pc ON ais.product_category_id=pc.id
JOIN aggregated_product_categories ac ON ac.id = pc.aggregate_category_id
WHERE ac.category_name IN (?)
AND qc.date BETWEEN ? AND ?
GROUP BY pc.aggregate_category_id, qc.quarter, qc.year
UNION
SELECT pc.category_name category_name, ais.volume volume, qc.date, qc.quarter as quart, qc.year
FROM actual_industry_shipment ais
JOIN quarter_calendar qc ON ais.quarter=qc.id
JOIN product_category pc ON ais.product_category_id=pc.id
WHERE pc.category_name IN (?)
AND qc.date BETWEEN ? AND ?
Native запроса, который объявлен в коде
private static final String SHIPMENTS_UNION_QUERY =
"SELECT ac.category_name category_name, SUM(ais.volume) volume, qc.date, qc.quarter as quarter, qc.year " +
"FROM actual_industry_shipment ais " +
"JOIN quarter_calendar qc " +
"ON ais.quarter=qc.id " +
"JOIN product_category pc " +
"ON ais.product_category_id=pc.id " +
"JOIN aggregated_product_categories ac " +
"ON ac.id = pc.aggregate_category_id " +
"WHERE " +
"ac.category_name IN (:aggreagateCategories) " +
"AND qc.date BETWEEN :startDate AND :endDate " +
"GROUP BY " +
"pc.aggregate_category_id, qc.quarter, qc.year " +
"UNION " +
"SELECT pc.category_name category_name, ais.volume volume, qc.date, qc.quarter as quart, qc.year " +
"FROM actual_industry_shipment ais " +
"JOIN quarter_calendar qc " +
"ON ais.quarter=qc.id " +
"JOIN product_category pc " +
"ON ais.product_category_id=pc.id " +
"WHERE pc.category_name IN (:individualCategories) " +
"AND qc.date BETWEEN :startDate AND :endDate";
Вы можете добавить код для SHIPMENTS_UNION_QUERY, а что является причиной проблемы? – developer
Отправьте запрос, который вы пытаетесь выполнить. –
Нашел проблему, я отправил параметр в предложение IN в качестве цитированного текста вместо List в setParameter, но который поддерживается только в Hibernate –