inherante: loading Class master the instance is not type Class Child
lc.lcarlosrincon.gmail.com Dec 15, 2011 4:36 PMCaused by: java.lang.ClassCastException: com.terasoft.ufps.sian.notas.persistencia.sistemaCalificacion.TipoCalificacion_$$_javassist_864 cannot be cast to com.terasoft.ufps.sian.notas.persistencia.sistemaCalificacion.CalificacionCualitativa
at com.terasoft.ufps.sian.notas.action.CalificacionRubricaBean.getOpcionesCalificacion(CalificacionRubricaBean.java:466)
this are classes of my project:
Class master:
@Entity
@Table(name = "TIPO_CALIFICACION")
@Inheritance(strategy=InheritanceType.JOINED)
//@DiscriminatorColumn(name="TIPO", discriminatorType=DiscriminatorType.INTEGER)
public class TipoCalificacion implements java.io.Serializable {
private int id;
private byte tipo;
private String descripcion;
private String nombre;
}
Class child:
@Entity
@Table(name = "CALIFICACION_CUALITATIVA")
//@DiscriminatorValue("0")
@PrimaryKeyJoinColumn(name="ID")
public class CalificacionCualitativa extends TipoCalificacion implements java.io.Serializable {
//private int id;
//private TipoCalificacion tipoCalificacion;
private Byte nroOpciones;
private Set<OpcionCalCualitativa> opcionCalCualitativas = new HashSet<OpcionCalCualitativa>(
0);
when i intented load the class TipoCalificacion throw of other object it should load
the instance of type CalificacionCualitativa (polymorphism) inside the class TipoCalificacion. Show the code:
@Entity
@Table(name = "GRUPO_ACADEMICO")
public class GrupoAcademico implements java.io.Serializable {
private int id;
.....
private TipoCalificacion tipoCalificacion;
.....
.....
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TIPO_CALIFICACION_ID")
public TipoCalificacion getTipoCalificacion() {
return this.tipoCalificacion;
}
public void setTipoCalificacion(TipoCalificacion tipoCalificacion) {
this.tipoCalificacion = tipoCalificacion;
}
}
and its the code action bean:
@Name("calificacionBean")
@Scope(ScopeType.CONVERSATION)
public class CalificacionRubricaBean {
.....
.....
public void load(){
....
TipoCalificacion tc = grupoAcademicoHome.getInstance().getTipoCalificacion();
log.info("opciones de cal:"+tc);
log.info("opciones de cal:"+(tc instanceof CalificacionCualitativa));
log.info("opciones de cal:"+(tc instanceof TipoCalificacion));
log.info("opciones de cal:"+tc.getClass().getCanonicalName());
//CalificacionCualitativa cc = entityManager.find(CalificacionCualitativa.class, tc.getId());
CalificacionCualitativa cc = (CalificacionCualitativa)tc; //here error
...
}
when i use the line code, the operation of load is actioned rigth:
//CalificacionCualitativa cc = entityManager.find(CalificacionCualitativa.class, tc.getId());
thanks to the person can help me...
at com.terasoft.ufps.sian.notas.action.CalificacionRubricaBean.getOpcionesCalificacion(CalificacionRubricaBean.java:466)
this are classes of my project:
Class master:
@Entity
@Table(name = "TIPO_CALIFICACION")
@Inheritance(strategy=InheritanceType.JOINED)
//@DiscriminatorColumn(name="TIPO", discriminatorType=DiscriminatorType.INTEGER)
public class TipoCalificacion implements java.io.Serializable {
private int id;
private byte tipo;
private String descripcion;
private String nombre;
}
Class child:
@Entity
@Table(name = "CALIFICACION_CUALITATIVA")
//@DiscriminatorValue("0")
@PrimaryKeyJoinColumn(name="ID")
public class CalificacionCualitativa extends TipoCalificacion implements java.io.Serializable {
//private int id;
//private TipoCalificacion tipoCalificacion;
private Byte nroOpciones;
private Set<OpcionCalCualitativa> opcionCalCualitativas = new HashSet<OpcionCalCualitativa>(
0);
when i intented load the class TipoCalificacion throw of other object it should load
the instance of type CalificacionCualitativa (polymorphism) inside the class TipoCalificacion. Show the code:
@Entity
@Table(name = "GRUPO_ACADEMICO")
public class GrupoAcademico implements java.io.Serializable {
private int id;
.....
private TipoCalificacion tipoCalificacion;
.....
.....
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TIPO_CALIFICACION_ID")
public TipoCalificacion getTipoCalificacion() {
return this.tipoCalificacion;
}
public void setTipoCalificacion(TipoCalificacion tipoCalificacion) {
this.tipoCalificacion = tipoCalificacion;
}
}
and its the code action bean:
@Name("calificacionBean")
@Scope(ScopeType.CONVERSATION)
public class CalificacionRubricaBean {
.....
.....
public void load(){
....
TipoCalificacion tc = grupoAcademicoHome.getInstance().getTipoCalificacion();
log.info("opciones de cal:"+tc);
log.info("opciones de cal:"+(tc instanceof CalificacionCualitativa));
log.info("opciones de cal:"+(tc instanceof TipoCalificacion));
log.info("opciones de cal:"+tc.getClass().getCanonicalName());
//CalificacionCualitativa cc = entityManager.find(CalificacionCualitativa.class, tc.getId());
CalificacionCualitativa cc = (CalificacionCualitativa)tc; //here error
...
}
when i use the line code, the operation of load is actioned rigth:
//CalificacionCualitativa cc = entityManager.find(CalificacionCualitativa.class, tc.getId());
thanks to the person can help me...