Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Problem using @DiscriminatorValue - making the value given case insensitive

shreeja_rMay 28 2007 — edited May 30 2007
Hi,

I have a class OrderStatusReport with InheritanceType 'JOINED' and i have used the column "service_class" as the discriminator column .Here is the code snippet.

@Table(name = "order_status_report")
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="service_class",discriminatorType=DiscriminatorType.STRING)
public class OrderStatusReport implements Serializable {}

Now i have declared one of my sub class as below using the @DiscriminatorValue annotation with value as "Audit"

@Entity
@Table(name="order_status_report")
@DiscriminatorValue(value="Audit")
public class AuditOrderStatusReport extends OrderStatusReport {


/** Creates a new instance of AuditOrderStatusReport */
public AuditOrderStatusReport() {
}
}

Now since one of the records of table 'order_status_report' has the value 'AUDIT'(full capital letters) instead of 'Audit' for the column 'service_class'' i am getting an exception 'Missing class for indicator field value'.Here is a complete stack trace of the exception thrown:



HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'orderStatusReports' from bean of type com.zerone.qai.view.AuditHistoryController: Exception [TOPLINK-43] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [AUDIT] of type [class java.lang.String].
Descriptor: RelationalDescriptor(com.zerone.qai.model.OrderStatusReport --> [DatabaseTable(order_status_report)])
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)


root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.el.EvaluationException: Error getting property 'orderStatusReports' from bean of type com.zerone.qai.view.AuditHistoryController: Exception [TOPLINK-43] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [AUDIT] of type [class java.lang.String].
Descriptor: RelationalDescriptor(com.zerone.qai.model.OrderStatusReport --> [DatabaseTable(order_status_report)])
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:854)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.auditHistoryView_jsp._jspService(auditHistoryView_jsp.java:481)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)


root cause

javax.faces.el.EvaluationException: javax.faces.el.EvaluationException: Error getting property 'orderStatusReports' from bean of type com.zerone.qai.view.AuditHistoryController: Exception [TOPLINK-43] (Oracle TopLink Essentials - 2006.8 (Build 060830)): oracle.toplink.essentials.exceptions.DescriptorException
Exception Description: Missing class for indicator field value [AUDIT] of type [class java.lang.String].
Descriptor: RelationalDescriptor(com.zerone.qai.model.OrderStatusReport --> [DatabaseTable(order_status_report)])
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
javax.faces.component.UIData.getValue(UIData.java:527)
javax.faces.component.UIData.getDataModel(UIData.java:856)
javax.faces.component.UIData.setRowIndex(UIData.java:379)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
javax.faces.component.UIData.encodeBegin(UIData.java:681)
javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
org.apache.jsp.auditHistoryView_jsp._jspx_meth_h_dataTable_0(auditHistoryView_jsp.java:1789)
org.apache.jsp.auditHistoryView_jsp._jspx_meth_h_form_1(auditHistoryView_jsp.java:1276)
org.apache.jsp.auditHistoryView_jsp._jspx_meth_f_view_0(auditHistoryView_jsp.java:552)
org.apache.jsp.auditHistoryView_jsp._jspService(auditHistoryView_jsp.java:456)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.apache.myfaces.component.html.util.ExtensionsFilter.doFilter(ExtensionsFilter.java:112)


note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.


--------------------------------------------------------------------------------



Can somebody help me with this?Is there any way of giving more than one value for discrimator value annotation?Is there any way of telling to use 'Audit' as @DiscriminatorValue irrespective of the case in which it is given?
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 27 2007
Added on May 28 2007
1 comment
1,202 views