我使用hibernate的3.x版本,并且我有一个从父对象Y继承的对象X.我有另一个对象Z,它与对象X的关系如下X OneToMany Z
。因此,对象Z将包含对象X。
我读了很多问题,但它没有回答我的问题。
在我的XHTML中,我在下拉列表中选择了X对象,并检索其id以加载对象,并在我的bean中检索此ID以加载X对象,通过插入具有空值的对象X来完成插入。当我尝试通过调用我的服务显示对象是否已恢复时,会出现此错误
An Error Occurred:
java.lang.ClassCastException: ma.controle.gestion.modele.Parent_$$_javassist_6 cannot be cast to ma.controle.gestion.modele.Activite
这是父对象(Y)
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE_OBJET")
@DiscriminatorValue("PARENT")
public class Parent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long idt_parent;
private String nom;
private String description;
// Getters Setters
}
这是继承自Y(X)
的Object@Entity
@DiscriminatorValue("ACTIVITE")
public class Activite extends Parent implements Serializable {
private static final long serialVersionUID = 1L;
private String code_sa;
// The mapping of the object Z
@OneToMany(mappedBy="activite",cascade=CascadeType.REMOVE, orphanRemoval = true)
private Collection<Affectation_Activite> affectation_Activites;
// Getters , setters and construct
}
这是模型(对象Z)
@Entity
public class Affectation_Activite implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long idt_affectation_activite;
private Date dateDebut;
private Date dateFin;
@ManyToOne
@JoinColumn(name="idt_parent")
private Activite activite;
// Getters, setters and construct
}
这是我的bean的保存
public void save(ActionListener e){
Activite activite=(Activite)parentService.findParentById(idt_parent);
System.out.println("Activite nom ====> " + activite .getNom() + " et la description" + activite.getDescription() );
affectationActivite.setActivite(activite);
affectationActiviteService.addAffectation(affectationActivite);
}
答案 0 :(得分:0)
解决方案:我认为这是因为当您使用父服务时,它将返回一个没有Active类值的新父级。您应该使用Active服务
与@ Ronce96相关