Параметр Jasper Report возвращает неверные результаты - PullRequest
0 голосов
/ 09 июля 2011

Я пишу отчет, чтобы получить результат из базы данных MySQL.Запрос имеет один параметр, который имеет тип int в базе данных mysql.Я определяю параметр типа java.lang.Integer, но когда я запускаю отчет и присваиваю ему значение, он не возвращает никаких данных.Я попытался изменить тип параметра на String, затем я получил неправильные результаты.Вот запрос отчета:

    SELECT
     orders.`number` AS orders_number,
     orders.`length` AS orders_length,
     orders.`thick` AS orders_thick,
     orders.`date` AS orders_date,
     orders.`weight` AS orders_weight
FROM
     `orders` orders
WHERE
     orders.`customer_id` = $P{cust_id}

, а вот схема таблицы заказов:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) DEFAULT NULL,
  `number` double DEFAULT NULL,
  `length` double DEFAULT NULL,
  `thick` int(11) DEFAULT NULL,
  `weight` double DEFAULT NULL,
  `date` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `customer_fk` (`customer_id`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8$

Спасибо,

1 Ответ

0 голосов
/ 10 июля 2011

Попробуйте переключить синтаксис $P{} на $P!{}. Как в,

WHERE
    orders.`customer_id` = $P!{cust_id}

Джаспер обычно работает, преобразовывая запрос в объект Java PreparedStatement, затем устанавливая параметры, используя методы объекта. Синтаксис $P!{} будет выполнять подстановку параметров перед преобразованием запроса в объект.

...