2013-02-28 4 views
4

У меня есть файл jrxml. Когда я запускаю этот файл в IReport Designer 4.8.0, выводит отчет без сбоев. Но когда я разворачиваю тот же файл в JasperServer 5.0.0, он выдает исключение.Java.lang.ClassCastException: java.util.Date не может быть отнесено к java.sql.Timestamp

The server has encountered an error. Please excuse the inconvenience. 
Error Message 

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp 
Error Trace 

java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Timestamp at  net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setTimestamp(JRJdbcQueryExecuter.java:605) at 
net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:569) at 
net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.setStatementParameter(JRJdbcQueryExecuter.java:399) at 
net.sf.jasperreports.engine.query.JRJdbcQueryExecuter$1.visit(JRJdbcQueryExecuter.java:332) at  net.sf.jasperreports.engine.query.JRAbstractQueryExecuter$QueryParameter.accept(JRAbstractQueryExecuter.java:157) at  net.sf.jasperreports.engine.query.JRAbstractQueryExecuter.visitQueryParameters(JRAbstractQueryExecuter.java:646) at  net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:317) at  net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196) at  com.jaspersoft.jasperserver.api.engine.jasperreports.util.JRTimezoneJdbcQueryExecuter.createDatasource(JRTimezoneJdbcQueryExecuter.java:168) at  net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1086) at 
net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:667) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258) at  net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877) at 
net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFiller.run(BaseFillHandle.java:120) at  com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$SynchronousExecutor.execute(EngineServiceImpl.java:859) at  net.sf.jasperreports.engine.fill.BaseFillHandle.startFill(BaseFillHandle.java:165) at  com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$AsynchronousReportFiller.fillReport(EngineServiceImpl.java:821) at  com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl.fillReport(EngineServiceImpl.java:1622) at  com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportFill.runReport(EngineServiceImpl.java:1005) at  com.jaspersoft.jasperserver.api.engine.jasperreports.service.impl.EngineServiceImpl$ReportRunnable.run(EngineServiceImpl.java:881) at  java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at  java.lang.Thread.run(Thread.java:619) 

parameter, я передаю и querystring в jrxml файл является

<parameter name="EndDate" isForPrompting="true" class="java.sql.Timestamp"> 
    <defaultValueExpression ><![CDATA[new Date(System.currentTimeMillis())]]></defaultValueExpression> 
</parameter> 
<queryString><![CDATA[declare @startdate as datetime; 
declare @enddate as datetime; 
declare @sitegroup as nvarchar(50); 
set @startdate = $P{EndDate}-1; 
set @enddate = $P{EndDate}; 
set @sitegroup = 'BBXNCR'; 
set NOCOUNT ON; -- Added by JC230090: Fixes bug when running query with Jasper 

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo]. [#temp_invlines]') AND type in (N'U')) 
DROP TABLE [dbo].[#temp_invlines] 
create table #temp_invlines (site_iid uniqueidentifier, invoice_line_type_iid int, sub_total float, tax_total float,line_total float, product_type_iid int); 
insert into #temp_invlines (site_iid,invoice_line_type_iid, sub_total, tax_total, line_total, product_type_iid) 
select h.site_iid, invoice_line_type_iid, l.sub_total, l.tax_total, l.line_total, l.product_type_iid 
from invoice_lines l 
    inner join invoices h on l.invoice_iid = h.invoice_iid 
where h.invoice_dt >= @startdate and h.invoice_dt < @enddate 

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#temp_payment_invoices]') AND type in (N'U')) 
DROP TABLE [dbo].[#temp_payment_invoices] 
create table #temp_payment_invoices (site_iid uniqueidentifier, inv_amount float); 
insert into #temp_payment_invoices (site_iid, inv_amount) 
select i.site_iid, i.total 
from invoice_payments p 
    inner join Invoice_Payment_Invoice_Xref pXref on p.invoice_payment_iid = pXref.invoice_payment_iid 
    inner join invoices i on pXref.invoice_iid = i.invoice_iid 
where p.payment_dt >= @startdate and p.payment_dt < @enddate 

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#temp_promocodes]') AND type in (N'U')) 
DROP TABLE [dbo].[#temp_promocodes] 
create table #temp_promocodes (site_iid uniqueidentifier, invoice_promo_line_type_iid int, promo_amount float); 
insert into #temp_promocodes (site_iid, invoice_promo_line_type_iid, promo_amount) 
select h.site_iid, pl.invoice_promo_line_type_iid, pl.amount 
from invoice_promo_lines pl 
inner join invoices h on pl.invoice_iid = h.invoice_iid 
where h.invoice_dt >= @startdate and h.invoice_dt < @enddate 



select 
rtrim(s.site_id) as [Site ID] 
, rtrim(ss.Description) as [Status] 
, @startdate as [Date] 
, datename(dw,@startdate) as [DoW] 
, rtrim(s.name) as [Store Code] 
, rtrim(isnull(sg.Description,'')) as [Site Group] 
, rtrim(s.address1) + ', ' + rtrim(s.city) + ', ' + rtrim(s.state) + ' ' + rtrim(s.Zip) as [Address] 
, rtrim(pg.description) as [RentPriceGroup] 

, (select count(*) from invoices h where h.invoice_dt >= @startdate and h.invoice_dt < @enddate and h.site_iid = s.site_iid) as [Trans] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 1) as [Rent Rev] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 2) as [Ext Day Rev] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 0 and l.product_type_iid = 2) as [Used Sell Rev] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 0 and l.product_type_iid <> 2) as [New Sell Rev] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid) as [Rev Total] 
, (select isnull(sum(tax_total),0) from #temp_invlines l where l.site_iid = s.site_iid) as [Tax Total] 
, (select isnull(sum(line_total),0) from #temp_invlines l where l.site_iid = s.site_iid) as [Grand Total] 
, (select isnull(sum(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid) /
(select case when count(*) = 0 then 1 else count(*) end from invoices h where h.invoice_dt >= @startdate and h.invoice_dt < @enddate and h.site_iid = s.site_iid) 
as [Rev/Trans] 
, (select isnull(count(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 1) as [Rent Cnt] 
, (select isnull(count(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 2) as [Ext Day Cnt] 
, (select isnull(count(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 0 and l.product_type_iid = 2) as [Used Sell Cnt] 
, (select isnull(count(sub_total),0) from #temp_invlines l where l.site_iid = s.site_iid and l.invoice_line_type_iid = 0 and l.product_type_iid <> 2) as [New Sell Cnt] 
, (select isnull(count(promo_amount),0) from #temp_promocodes p where p.site_iid = s.site_iid and p.invoice_promo_line_type_iid = 0) as [CustSrv Promo Cnt] 
, (select isnull(sum(promo_amount),0) from #temp_promocodes p where p.site_iid = s.site_iid and p.invoice_promo_line_type_iid = 0) as [CustSrv Promo Amt] 
, (select isnull(count(promo_amount),0) from #temp_promocodes p where p.site_iid = s.site_iid and p.invoice_promo_line_type_iid = 1) as [Marketing Promo Cnt] 
, (select isnull(sum(promo_amount),0) from #temp_promocodes p where p.site_iid = s.site_iid and p.invoice_promo_line_type_iid = 1) as [Marketing Promo Amt] 

, (SELECT 
    isnull(count(*),0) 
FROM Invoice_Lines ilrtn 
    INNER JOIN Invoices ihrtn on ilrtn.invoice_iid = ihrtn.invoice_iid 
    inner join customer_ids c on ihrtn.customer_id_iid = c.customer_id_iid 
    INNER JOIN Invoices ihrent on ihrtn.customer_id_iid = ihrent.customer_id_iid 
    INNER JOIN Invoice_lines ilrent on ihrent.invoice_iid = ilrent.invoice_iid 
WHERE ihrtn.invoice_dt >= @startdate 
    and ihrtn.invoice_dt < @enddate 
    and ilrtn.invoice_line_type_iid in (0,2) 
    AND ihrent.invoice_dt <= ihrtn.invoice_dt 
    AND ilrent.invoice_line_type_iid in (1) 
    AND ilrent.piece_id = ilrtn.piece_id 
    and ihrtn.site_iid = s.site_iid 
) as [Invoices] 

, (SELECT 
    isnull(sum(ilrent.line_total + ilrtn.line_total),0) 
FROM Invoice_Lines ilrtn 
    INNER JOIN Invoices ihrtn on ilrtn.invoice_iid = ihrtn.invoice_iid 
    inner join customer_ids c on ihrtn.customer_id_iid = c.customer_id_iid 
    INNER JOIN Invoices ihrent on ihrtn.customer_id_iid = ihrent.customer_id_iid 
    INNER JOIN Invoice_lines ilrent on ihrent.invoice_iid = ilrent.invoice_iid 
WHERE ihrtn.invoice_dt >= @startdate 
    and ihrtn.invoice_dt < @enddate 
    and ilrtn.invoice_line_type_iid in (0,2) 
    AND ihrent.invoice_dt <= ihrtn.invoice_dt 
    AND ilrent.invoice_line_type_iid in (1) 
    AND ilrent.piece_id = ilrtn.piece_id 
    and ihrtn.site_iid = s.site_iid 
) as [Collectable] 


, (select isnull(sum(p.amount),0) 
from invoice_payments p 
where p.payment_dt >= @startdate and p.payment_dt < @enddate 
and p.invoice_payment_iid in (
    select distinct p.invoice_payment_iid 
    from invoice_payments p 
    inner join Invoice_Payment_Invoice_Xref pXref on p.invoice_payment_iid = pXref.invoice_payment_iid 
    inner join invoices i on pXref.invoice_iid = i.invoice_iid 
    where p.payment_dt >= @startdate and p.payment_dt < @enddate 
    and i.site_iid = s.site_iid 
    group by p.invoice_payment_iid, pXref.invoice_iid) 
) as [Payments Collected] 
from sites s 
inner join Site_Statuses_Enum ss on s.site_status_iid = ss.site_status_iid 
inner join Site_Rent_Price_Groups as pg on s.site_rent_price_group_iid =  pg.site_rent_price_group_iid 
left outer join Site_SiteGroup_XRef sgx on s.site_iid = sgx.site_iid 
left outer join Site_Groups sg on sgx.site_group_iid = sg.site_group_iid 
where sg.Description in (@sitegroup) or sg.Description is null 
order by s.site_id 

drop table #temp_promocodes 
drop table #temp_payment_invoices 
drop table #temp_invlines;]]></queryString> 

Пожалуйста, помогите мне ...

+0

ca Вы показываете пример кода? –

+0

@JW. Я добавил код 'jrxml'. –

ответ

3

Изменить выражение значения параметра по умолчанию к следующим

new java.sql.Timestamp(System.currentTimeMillis())