2017-04-04 34 views
0

我使用3.x版本的hibernate,并且我有一个继承自父对象Y的对象X.我有另一个对象Z,它与对象X有关系如下X OneToMany Z。所以对象Z将包含对象X.如何修复Java中的java.lang.ClassCastException

我读了很多问题,但它没有回答我的问题。

在我的XHTML中,我在下拉列表中选择了X对象,并检索其id以加载对象,并在我的bean中检索此ID以加载X对象,插入操作是通过插入带有null值的对象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 )

@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 

} 

这里是MODELE(对象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 
} 

这里是温控功能保存我的豆

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); 


} 
+2

我认为,这是因为你使用的是父服务它是在没有活动类的值返回一个新的母公司。你应该使用Active服务代替 – ronce96

+0

@ ronce96感谢你的回复,但是我应该为每个儿子创建他们的服务吗?这是一个好方法吗? –

+2

你可以发布findParentById()方法的实现吗? – ronce96

回答

0

解决方案:我认为,这是因为你使用的是父服务它是在没有活动类的值返回一个新的母公司。您应该使用主动服务,而不是

相关的@ Ronce96