Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 如何修复java中的java.lang.ClassCastException_Hibernate_Casting_Classcastexception - Fatal编程技术网

Hibernate 如何修复java中的java.lang.ClassCastException

Hibernate 如何修复java中的java.lang.ClassCastException,hibernate,casting,classcastexception,Hibernate,Casting,Classcastexception,我使用hibernate的3.x版本,我有一个从父对象Y继承的对象x。我还有另一个对象Z,它与对象x有如下关系x OneToMany Z。因此,对象Z将包含对象X 我读了很多问题,但都没有回答我的问题 在我的XHTML中,我在下拉列表中选择了X对象,我检索它的id来加载对象,在我的bean中,我检索这个id来加载X对象。插入是通过插入带有空值的对象X来完成的。当我试图通过调用我的服务显示对象是否已恢复时,会出现此错误 An Error Occurred: java.lang.ClassCast

我使用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)

这是从Y(X)继承的对象

这是我的豆子的功能保存

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


}

解决方案:我认为这是因为当您使用父服务时,它返回一个新的父服务,而不包含活动类的值。你应该改用主动服务


与@Ronce96相关,我认为这是因为当您使用父服务时,它返回一个新的父服务,而没有活动类的值。您应该使用Active service而不是发布findParentById()方法的实现吗?我认为最好的做法是为父类创建一个服务类,为Activite创建另一个服务类,只要您在一个类中可能需要一些在另一个类中不需要的操作。假设您想通过code_sa创建一个findBy,您将在activite服务中实现它,而不是在父类中实现它,因此,如果您使用entityManager,那么我将为每个类使用一个服务作为一个adition,您必须指定要查找的实例的id和类。在您的情况下,如果您想查找父对象,但id属于Activite类行,则只要Discrimator列与您想要的类的鉴别器值不匹配,就会引发异常。如果此注释有帮助,我感谢您的支持。
@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

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


}