2011-07-09 7 views
0

私はmysqlデータベースから結果を得るためのレポートを作成しています。クエリには、mysqlデータベースにint型のパラメータが1つあります。私は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$ 

おかげで、

答えて

0

$P!{}ため$P{}構文を切り替えてみてください。以下のように、

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

ジャスパーは通常、オブジェクトのメソッドを使用してパラメータを設定し、その後、JavaのPreparedStatementオブジェクトにクエリを変換することによって動作します。 $P!{}構文は、クエリがオブジェクトに変換される前にパラメータ置換を行います。

関連する問題