java继承findAll“未映射”

java继承findAll“未映射”,java,inheritance,jpa,mapping,Java,Inheritance,Jpa,Mapping,我有以下实体: @Entity(name = "PersonneSingleTableDo") @Table(name = "personne") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "sexe", discriminatorType = DiscriminatorType.STRING) public abstract class PersonneDo { @I

我有以下实体:

@Entity(name = "PersonneSingleTableDo")
@Table(name = "personne")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "sexe", discriminatorType = DiscriminatorType.STRING)
public abstract class PersonneDo {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "id")
  private int           id;
  @Column(name = "nom")
  private String        nom;
  @Column(name = "datenaissance")
  private Date          datenaissance;
  @OneToMany(cascade = CascadeType.ALL, mappedBy = "personneDo", fetch = FetchType.EAGER)
  private Set<AmitieDo> amis;
...


@Entity(name = "HommeSingleTableDo")
@DiscriminatorValue(value = "homme")
public class HommeDo extends PersonneDo {

}


@Entity(name = "FemmeSingleTableDo")
//@Table(name = "personne")
@DiscriminatorValue(value = "femme")
public class FemmeDo extends PersonneDo {

}


@Entity(name = "AmitieSingleTableDo")
@Table(name = "amis")
public class AmitieDo {

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy = GenerationType.AUTO)
  private int        id;

  @ManyToOne
  @JoinColumn(name = "idPersonne")
  private PersonneDo personneDo;
  @ManyToOne
  @JoinColumn(name = "idAmi")
  private PersonneDo amiPersonneDo;
...
第二,当我删除一个男人的“人”是另一个人的朋友“阿弥斯”时,我再次找到第二个人,它仍然将第一个人列为朋友,尽管有层叠的注释:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "personneDo", fetch = FetchType.EAGER)
你能帮我理解为什么并解决这两个问题吗?

对HommeDo和FemmeDo使用Annotation@Table

此外,如果不使用@Entity注释中的name=homesingletabledo,请将其删除。例如:

@Entity

若我把表放在继承类中,那个么这是单_表的继承:févr。2014年6月26日下午6:31:55 org.hibernate.cfg.AnnotationBinder bindClass警告:HH000139:在单表层次结构的子类中非法使用表:ili.persistence.bean.stratsingletable.HommeDo févr。2014年6月26日下午6:31:55 org.hibernate.cfg.AnnotationBinder bindClass警告:HH000139:在单表层次结构的子类中非法使用表:ili.persistence.bean.stratsingletable.FemmeDoIt是因为PersonneDo类中有@Table。因此,当您扩展这个类时,它会在这两个类上得到两个注释。
@OneToMany(cascade = CascadeType.ALL, mappedBy = "personneDo", fetch = FetchType.EAGER)
@Table(name = "table_x")
@Entity