我是新的jasper报告。我已经创建了一个报告与SQL服务器存储过程。当查看报告从Swing框架我得到以下异常。
Could not create the report java.lang.String cannot be cast to java.lang.Integer
我已经用与sql Server 2000中存储过程定义相同的数据类型定义了报告的参数。
以下是本文的部分。显示存储过程调用的参数和查询的jrxml文件。
<parameter name="CatID" class="java.lang.String"/>
<parameter name="Start" class="java.lang.Integer"/>
<parameter name="Stop" class="java.lang.Integer"/>
<parameter name="GoldID" class="java.lang.String"/>
<parameter name="Percentage" class="java.lang.Float"/>
<parameter name="Karat" class="java.lang.Integer"/>
<parameter name="DiaGrade" class="java.lang.Integer"/>
<parameter name="StoneGrade" class="java.lang.Integer"/>
<queryString>
<![CDATA[{call PriceList($P{CatID},$P{Start} ,$P{Stop},$P{GoldID},$P{Karat},$P{StoneGrade} ,$P{DiaGrade},$P{Percentage} ) }]]>
</queryString>
<field name="Design" class="java.lang.String"/>
<field name="DesignP" class="java.lang.String"/>
<field name="Model" class="java.lang.String"/>
<field name="GoldCode" class="java.lang.String"/>
<field name="CatID" class="java.lang.String"/>
<field name="OrnID" class="java.lang.Integer"/>
<field name="StoneID" class="java.lang.String"/>
<field name="ProfitPer" class="java.math.BigDecimal"/>
<field name="PlatingChg" class="java.lang.Integer"/>
<field name="SetCode" class="java.lang.String"/>
<field name="CompCost" class="java.math.BigDecimal"/>
<field name="USRate" class="java.math.BigDecimal"/>
<field name="CCost" class="java.math.BigDecimal"/>
<field name="Karat" class="java.lang.Integer"/>
<field name="GoldIDConv" class="java.lang.String"/>
<field name="StoneGrade" class="java.lang.Integer"/>
<field name="DiaGrade" class="java.lang.Integer"/>
<field name="CompCost1" class="java.math.BigDecimal"/>
<field name="GCost" class="java.math.BigDecimal"/>
<field name="ACost" class="java.math.BigDecimal"/>
<field name="SCost" class="java.math.BigDecimal"/>
<field name="Cost" class="java.math.BigDecimal"/>
<field name="Percentage" class="java.math.BigDecimal"/>
<field name="Price" class="java.math.BigDecimal"/>
我存储过程的一部分如下
create PROCEDURE PriceList
@CatID char(1),
@Start int,
@Stop int,
@GoldID char(1),
@Karat tinyInt,
@StoneGrade tinyint,
@DiaGrade tinyInt,
@Percentage numeric(6,3)
AS
DECLARE @mGold varchar(4),
@TotStones int,
@StoneGradePrice int,
@CurrRate numeric(9,5)
Select @mGold = ''
Select @CurrRate = Rate From Currency Where Currency = 1
Select @TotStones = 0
Select @StoneGradePrice = 0
IF @GoldID='W'
SELECT @mGold='W'
IF @GoldID='N'
SELECT @mGold='WN'
IF @GoldID='P'
SELECT @mGold='PT'
IF @GoldID = 'Z'
Select @mGold = '(2T)'
IF @GoldID = 'Q'
Select @mGold = '(2P)'
SELECT Design=convert(varchar(20),Design+@mGold),
DesignP=Design,Model=dbo.GetModel(Design),GoldCode=@mGold,
CatID,
OrnID,
StoneID,
ProfitPer,
PlatingChg,
SetCode,
CompCost ,
USRate=@CurrRate,
CCost=CUS/@CurrRate
INTO #CTemp
FROM Charges a
WHERE a.CatID=@CatID
AND OrnID BETWEEN @Start AND @Stop
IF @GoldID='0'or @GoldID = 'Z' or @GoldID = 'T' or @GoldID = 'Q' or @GoldID = 'V'
SELECT a.CatID,
OrnID,Small=max(isnull(b.Small,0)), Medium=max(isnull(b.Medium,0)), Large=max(isnull(b.Large,0)),Karat=@Karat,GCost=SUM(GUS),KChainConv=max(KChainConv)
INTO #GTemp
FROM GoldCost a left outer join CatGoldPlatingChg b on a.catid = b.catid and b.GoldID = @GoldID
WHERE a.CatID=@CatID AND mKarat=@Karat
AND OrnID BETWEEN @Start AND @Stop
GROUP BY a.CatID,OrnID
SELECT a.*,
b.Karat,
GoldIDConv=@GoldID,
StoneGrade,
DiaGrade,
CompCost1=coalesce(CompCost *((100+KChainConv)/100),0),
GCost=coalesce(GCost,0) +( coalesce((case PlatingChg when 1 then Small when 2 then Medium else Large end),0)/@CurrRate) ,
ACost=coalesce(ACost,0),
SCost= coalesce(SCost,0),
Cost=coalesce(CCost,0)+ coalesce(ACost,0) + coalesce(GCost,0)+ (coalesce((case PlatingChg when 1 then Small when 2 then Medium else Large end),0)/@CurrRate) +coalesce(SCost,0) + coalesce(CompCost *((100+KChainConv)/100),0),
Percentage=@Percentage,
Price=(convert(numeric(10,0),ceiling((((
coalesce(CCost,0)+ coalesce(ACost,0) + coalesce(GCost,0) + (coalesce((case PlatingChg when 1 then Small when 2 then Medium else Large end),0)/@CurrRate) +coalesce(SCost,0)) * (100+ProfitPer))/100) + coalesce((CompCost) *((100+KChainConv)/100),0) ) * (100+@Percentage)/100))
FROM #CTemp a
LEFT JOIN tempdb.#GTemp b ON (a.CatID=b.CatID AND a.OrnID=b.OrnID )
LEFT JOIN tempdb.#ATemp d ON (a.CatID=d.CatID AND a.OrnID=d.OrnID )
LEFT JOIN tempdb.#STemp c ON (a.CatID=c.CatID AND a.OrnID=c.OrnID AND a.StoneID=c.StoneID)
WHERE b.GCOST IS NOT NULL AND c.SCOST IS NOT NULL
ORDER BY a.CatID,a.OrnID
错误很明显:
java.lang.String cannot be cast to java.lang.Integer
您正在尝试将字符串对象强制转换为整数。这是不可能做到的。它们不是同一类型的。因此,请相应地验证输入数据和定义的字段数据类型。其中之一就是例外的原因。
问题内容: 我有一个包含以下定义: 值定义如下: 在活动中被调用如下: 到目前为止,一切都很好,但是当代码被实际调用时,我得到了这个错误: 这个错误对我来说没有任何意义。该列表仅包含可以转换为int的值,并且xml文件和代码中给出的默认值也仅表示一个数字。那么,为什么会出现此错误,以及如何解决呢? 问题答案: 如果您查看内部的内容,将会发现问题: 您的键“ limitSetting”返回一个不能转
问题内容: 我正在运行以下查询。它显示一条错误消息。如何解决这个错误? 错误是: 问题答案: 您可以这样写: 已经是一个字符串列表,因为您只选择了一列。 此外,正如Thilo的答案所暗示的那样,您可以将结果直接转换为a 而不是使用。
Deal和DealDocument类是相同的。Deal document类如下所示: 你觉得问题可能是什么?它似乎是随机出现的,好像它工作正常,但在时间内系统退化 *更新*:这是我如何配置模型映射器的:ModelMapper.GetConfiguration().SetAmbiguity忽略(false).SetFieldMatchingEnabled(true).SetMatchingStrat
问题内容: 我是Java的新手,正在尝试理解为什么第一个代码片段不会导致此异常,而第二个代码片段会导致此异常。由于在两种情况下都将字符串数组传递到Arrays.asList中,所以两个代码片段都不应该产生异常还是不产生异常? 第一个代码段(毫无例外): 第二段(导致上述异常): 如果相关,我正在Eclipse Helios中使用JavaSE 1.6。 问题答案: 对我来说(使用Java 1.6.0
问题内容: 在我的应用程序中,我需要将arraylist转换为数组的字符串。但是,我得到一个错误: 在与我在一起的错误: 这是完整的代码: 问题答案: 尝试 注意:我建议将listofurls重命名为arrayOfURLs