2017-04-04 14 views
0

私はhibernateのバージョン3.xを使用しています。親オブジェクトYから継承するオブジェクトXを持っています。オブジェクトXとの関係を持つ別のオブジェクトZを持っています。 X OneToMany Zに従います。したがって、オブジェクトZにはオブジェクトXが含まれます。Javaでjava.lang.ClassCastExceptionを修正する方法

私は多くの質問を読んでいますが、私の問題には答えません。

私のXHTMLでは、ドロップダウンでXオブジェクトを選択し、オブジェクトをロードするためにそのIDを取得し、私のBeanでこのIDを取得してXオブジェクトをロードすると、挿入はnull値のオブジェクトXを挿入することによって行われます。私は、オブジェクトが、このエラーはここで親オブジェクト(Y)がある

An Error Occurred: 

java.lang.ClassCastException: ma.controle.gestion.modele.Parent_$$_javassist_6 cannot be cast to ma.controle.gestion.modele.Activite 

を表示されます私のサービスを呼び出すことによって回収された場合に表示しようとすると、

@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 
} 
あります10

そして、ここでは私の豆の保存

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

にアクティブなサービスを使用する必要があります。あなたは代わりにアクティブなサービスを使用する必要があります – ronce96

+0

@ ronce96 urの応答に感謝しますが、私はそれぞれの息子のために自分のサービスを作成する必要がありますか?それは良い方法ですか? –

+2

findParentById()メソッドの実装を投稿できますか? – ronce96

答えて

0

ソリューションfucntionです:私はあなたが親サービスを使用しているとして、それがアクティブなクラスの値をせずに新しい親を返しているためであると考えています。代わりに

関連@ Ronce96私はあなたが親サービスを使用しているとして、それがアクティブなクラスの値をせずに新しい親を返しているためであると考えて

関連する問題