无法将java.lang.Integer转换为java.lang.String异常
我在运行mdx查询时遇到此错误。。我真的不能理解这个错误,我再次做了很多次立方体,但我仍然得到这个错误! 这是完全错误:无法将java.lang.Integer转换为java.lang.String异常,java,postgresql,mdx,pentaho,mondrian,Java,Postgresql,Mdx,Pentaho,Mondrian,我在运行mdx查询时遇到此错误。。我真的不能理解这个错误,我再次做了很多次立方体,但我仍然得到这个错误! 这是完全错误: Warning: Could not get charToByteConverterClass! Warning: Could not get charToByteConverterClass! Warning: Could not get charToByteConverterClass! Warning: Could not get charToByteConverter
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
Warning: Could not get charToByteConverterClass!
[JPivot] 21 apr 2017 16:48:13,861 ERROR [Session 08BEA8C58E687AE8F99184BC19FA07A1] com.tonbeller.wcf.component.RendererTag#doEndTag: trouble rendering table01
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at mondrian.rolap.RolapMemberBase.getName(RolapMemberBase.java:233)
at mondrian.olap.OlapElementBase.getCaption(OlapElementBase.java:84)
at mondrian.olap.MemberBase.getCaption(MemberBase.java:108)
at mondrian.rolap.DelegatingRolapMember.getCaption(DelegatingRolapMember.java:176)
at com.tonbeller.jpivot.mondrian.MondrianMember.getLabel(MondrianMember.java:79)
at com.tonbeller.jpivot.table.SpanBuilderImpl$RenderSwitch.visitMember(SpanBuilderImpl.java:111)
at com.tonbeller.jpivot.mondrian.MondrianMember.accept(MondrianMember.java:161)
at com.tonbeller.jpivot.table.SpanBuilderImpl.build(SpanBuilderImpl.java:142)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.AxisHeaderBuilderSupport.build(AxisHeaderBuilderSupport.java:63)
at com.tonbeller.jpivot.table.AxisBuilderSupport.buildHeading(AxisBuilderSupport.java:253)
at com.tonbeller.jpivot.table.RowAxisBuilderImpl.buildRow(RowAxisBuilderImpl.java:51)
at com.tonbeller.jpivot.table.TableComponent.buildRows2Dim(TableComponent.java:490)
at com.tonbeller.jpivot.table.TableComponent.render2(TableComponent.java:274)
at com.tonbeller.jpivot.table.TableComponent.render(TableComponent.java:235)
at com.tonbeller.wcf.component.RendererTag.doEndTag(RendererTag.java:137)
at org.apache.jsp.testpage_jsp._jspx_meth_wcf_005frender_005f6(testpage_jsp.java:1398)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:238)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.tonbeller.wcf.controller.RequestFilter$MyHandler.normalRequest(RequestFilter.java:139)
at com.tonbeller.wcf.controller.RequestFilter.doFilter(RequestFilter.java:264)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
[JPivot] 21 apr 2017 16:48:13,956 ERROR [Session 08BEA8C58E687AE8F99184BC19FA07A1] com.tonbeller.wcf.controller.RequestFilter$MyHandler#handleException: exeption
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.tonbeller.wcf.controller.RequestFilter$MyHandler.normalRequest(RequestFilter.java:139)
at com.tonbeller.wcf.controller.RequestFilter.doFilter(RequestFilter.java:264)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:908)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:272)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
... 23 more
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at mondrian.rolap.RolapMemberBase.getName(RolapMemberBase.java:233)
at mondrian.olap.OlapElementBase.getCaption(OlapElementBase.java:84)
at mondrian.olap.MemberBase.getCaption(MemberBase.java:108)
at mondrian.rolap.DelegatingRolapMember.getCaption(DelegatingRolapMember.java:176)
at com.tonbeller.jpivot.mondrian.MondrianMember.getLabel(MondrianMember.java:79)
at com.tonbeller.jpivot.table.SpanBuilderImpl$RenderSwitch.visitMember(SpanBuilderImpl.java:111)
at com.tonbeller.jpivot.mondrian.MondrianMember.accept(MondrianMember.java:161)
at com.tonbeller.jpivot.table.SpanBuilderImpl.build(SpanBuilderImpl.java:142)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.AxisHeaderBuilderSupport.build(AxisHeaderBuilderSupport.java:63)
at com.tonbeller.jpivot.table.AxisBuilderSupport.buildHeading(AxisBuilderSupport.java:253)
at com.tonbeller.jpivot.table.RowAxisBuilderImpl.buildRow(RowAxisBuilderImpl.java:51)
at com.tonbeller.jpivot.table.TableComponent.buildRows2Dim(TableComponent.java:490)
at com.tonbeller.jpivot.table.TableComponent.render2(TableComponent.java:274)
at com.tonbeller.jpivot.table.TableComponent.render(TableComponent.java:235)
at com.tonbeller.wcf.component.RendererTag.doEndTag(RendererTag.java:137)
at org.apache.jsp.testpage_jsp._jspx_meth_wcf_005frender_005f6(testpage_jsp.java:1398)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:238)
... 26 more
[JPivot] 21 apr 2017 16:48:14,081 ERROR [Session 08BEA8C58E687AE8F99184BC19FA07A1] com.tonbeller.wcf.controller.RequestFilter$MyHandler#handleException: cause
javax.servlet.ServletException: javax.servlet.jsp.JspException: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:908)
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:272)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.tonbeller.wcf.controller.RequestFilter$MyHandler.normalRequest(RequestFilter.java:139)
at com.tonbeller.wcf.controller.RequestFilter.doFilter(RequestFilter.java:264)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1852)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
at mondrian.rolap.RolapMemberBase.getName(RolapMemberBase.java:233)
at mondrian.olap.OlapElementBase.getCaption(OlapElementBase.java:84)
at mondrian.olap.MemberBase.getCaption(MemberBase.java:108)
at mondrian.rolap.DelegatingRolapMember.getCaption(DelegatingRolapMember.java:176)
at com.tonbeller.jpivot.mondrian.MondrianMember.getLabel(MondrianMember.java:79)
at com.tonbeller.jpivot.table.SpanBuilderImpl$RenderSwitch.visitMember(SpanBuilderImpl.java:111)
at com.tonbeller.jpivot.mondrian.MondrianMember.accept(MondrianMember.java:161)
at com.tonbeller.jpivot.table.SpanBuilderImpl.build(SpanBuilderImpl.java:142)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.SpanBuilderDecorator.build(SpanBuilderDecorator.java:34)
at com.tonbeller.jpivot.table.navi.DrillExpandUI$DomDecorator.build(DrillExpandUI.java:81)
at com.tonbeller.jpivot.table.AxisHeaderBuilderSupport.build(AxisHeaderBuilderSupport.java:63)
at com.tonbeller.jpivot.table.AxisBuilderSupport.buildHeading(AxisBuilderSupport.java:253)
at com.tonbeller.jpivot.table.RowAxisBuilderImpl.buildRow(RowAxisBuilderImpl.java:51)
at com.tonbeller.jpivot.table.TableComponent.buildRows2Dim(TableComponent.java:490)
at com.tonbeller.jpivot.table.TableComponent.render2(TableComponent.java:274)
at com.tonbeller.jpivot.table.TableComponent.render(TableComponent.java:235)
at com.tonbeller.wcf.component.RendererTag.doEndTag(RendererTag.java:137)
at org.apache.jsp.testpage_jsp._jspx_meth_wcf_005frender_005f6(testpage_jsp.java:1398)
at org.apache.jsp.testpage_jsp._jspService(testpage_jsp.java:238)
... 26 more
以下是查询:
SELECT {[Measures].[quantita_media], [Measures].[quantita_totale]} ON
COLUMNS,
{([Periodo], [Articolo], [ScontrinoFiscale])} ON ROWS
FROM [Vendite]
这是postgresql架构:
CREATE TABLE data_dt (
data character varying(10) NOT NULL,
giorno character varying(10) NOT NULL,
mese character varying(10) NOT NULL,
anno character varying(4) NOT NULL
);
CREATE TABLE prodotto_dt (
nome character varying(30) NOT NULL,
descrizione character varying(30) NOT NULL
);
CREATE TABLE scontrino_dt (
codice integer NOT NULL,
totale integer NOT NULL
);
CREATE TABLE vendita_ft (
data character varying(10) NOT NULL,
nome character varying(30) NOT NULL,
codice integer NOT NULL,
quantita integer NOT NULL
);
ALTER TABLE ONLY data_dt
ADD CONSTRAINT data_dt_pkey PRIMARY KEY (data);
ALTER TABLE ONLY prodotto_dt
ADD CONSTRAINT prodotto_dt_pkey PRIMARY KEY (nome);
ALTER TABLE ONLY scontrino_dt
ADD CONSTRAINT scontrino_dt_pkey PRIMARY KEY (codice);
ALTER TABLE ONLY vendita_ft
ADD CONSTRAINT vendita_ft_pkey PRIMARY KEY (data, nome, codice);
ALTER TABLE ONLY vendita_ft
ADD CONSTRAINT vendita_ft_codice_fkey FOREIGN KEY (codice) REFERENCES scontrino_dt(codice);
ALTER TABLE ONLY vendita_ft
ADD CONSTRAINT vendita_ft_data_fkey FOREIGN KEY (data) REFERENCES data_dt(data);
ALTER TABLE ONLY vendita_ft
ADD CONSTRAINT vendita_ft_nome_fkey FOREIGN KEY (nome) REFERENCES prodotto_dt(nome);
这是schema workbench生成的xml多维数据集:
<Schema name="New Schema1">
<Cube name="Vendite" cache="true" enabled="true">
<Table name="vendita_ft" schema="public">
</Table>
<Dimension type="StandardDimension" foreignKey="data" highCardinality="false" name="Periodo">
<Hierarchy name="tempo" hasAll="true">
<Table name="data_dt" schema="public">
</Table>
<Level name="giorno" table="data_dt" column="giorno" nameColumn="giorno" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="mese" table="data_dt" column="mese" nameColumn="mese" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="anno" table="data_dt" column="anno" nameColumn="anno" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" foreignKey="nome" highCardinality="false" name="Articolo">
<Hierarchy name="prodotto" hasAll="true">
<Table name="prodotto_dt" schema="public">
</Table>
<Level name="nome" table="prodotto_dt" column="nome" nameColumn="nome" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="descrizione" table="prodotto_dt" column="descrizione" nameColumn="descrizione" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Dimension type="StandardDimension" foreignKey="codice" highCardinality="false" name="ScontrinoFiscale">
<Hierarchy name="scontrino" hasAll="true">
<Table name="scontrino_dt" schema="public">
</Table>
<Level name="codice" table="scontrino_dt" column="codice" nameColumn="codice" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="totale" table="scontrino_dt" column="totale" nameColumn="totale" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
</Hierarchy>
</Dimension>
<Measure name="quantita_media" column="quantita" aggregator="avg" visible="true">
</Measure>
<Measure name="quantita_totale" column="quantita" datatype="Integer" aggregator="sum" visible="true">
</Measure>
</Cube>
</Schema>
我想我找到了。在“scontrino_dt”表中,您将“codice”和“totale”声明为整数
CREATE TABLE scontrino_dt (
codice integer NOT NULL,
totale integer NOT NULL
);
但是在XML中,您将“codice”设置为String
<Level name="codice" table="scontrino_dt" column="codice" nameColumn="codice" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
<Level name="totale" table="scontrino_dt" column="totale" nameColumn="totale" type="Integer" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
</Level>
您使用的大多数技术我都不熟悉,因此如果没有帮助,请原谅 就
mdx
而言,我觉得这一行的细节太少了:
{([Periodo], [Articolo], [ScontrinoFiscale])} ON ROWS
通常在mdx中,您需要声明希望显示的级别或层次结构,而上面的似乎只是维度名称。请先尝试用以下内容替换上述行:
{[Periodo].[giorno].MEMBERS} ON ROWS
或者可能是这样:
{[Periodo].[tempo].[giorno].MEMBERS} ON ROWS
你还是有错误吗?如果没有,则要在行上有多个层次,
您需要找到在mondrian中执行交叉连接的方法-在ssas中,它是通过*
操作符完成的:
{[Periodo].[tempo].[giorno].MEMBERS
* [Articolo].[prodotto].[nome].MEMBERS} ON ROWS
在Mondrian中,您可能需要使用CROSSJOIN
功能:
CROSSJOIN(
[Periodo].[tempo].[giorno].MEMBERS
,[Articolo].[prodotto].[nome].MEMBERS) ON ROWS
是的,这是一个错误,因为我试图解决这个问题,但不幸的是,这不是问题!整数@DiabolicWords也有同样的错误