Pessoal,
Estou com o seguinte problema: tenho uma classe chamada Familia, uma chamada Enfermidade e outra chamada FamiliaEnfermidade. A Classe chamada FamiliaEnfermidade é associativa… Possui um atributo de Familia, um de Enfermidade e alguns atributos proprios dela.
Minha dúvida está no mapeamento dessas tres classes. Segue meu código:
Familia
@Entity
@Table(name="tbl_familia")
public class Familia implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@SequenceGenerator(name = "SEQ", sequenceName = "seq_familia", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@Column(name = "id_familia")
private Long id;
@Column(name="descricao")
private String descricao;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_centro", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Centro centro;
@OneToMany(mappedBy="familia", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private List<FamiliaEnfermidade> listaDeEnfermidades = new ArrayList<FamiliaEnfermidade>();
Enfermidade
@Entity
@Table(name="tbl_enfermidade")
public class Enfermidade {
@Id
@SequenceGenerator(name = "SEQ", sequenceName = "seq_enfermidade", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="SEQ")
@Column(name = "id_enfermidade")
private long id;
@Column(name="descricao")
private String descricao;
//@ManyToMany
//(fetch=FetchType.LAZY, mappedBy="listaDeEnfermidades", targetEntity=Usuario.class )
//private List<Usuario> listaDeUsuariosEnfermos;
@OneToMany(mappedBy="enfermidade", fetch = FetchType.LAZY)
@Cascade(CascadeType.ALL)
private List<FamiliaEnfermidade> listaDeFamiliasEnfermas;
FamiliaEnfermidade
@Id
@Column(name="id_familia")
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_familia", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
public Familia familia;
@Id
@Column(name="id_enfermidade")
//@OneToOne(cascade=CascadeType.ALL)
//@JoinColumn(name="id_enfermidade")
public Enfermidade enfermidade;
@Column(name="comentario")
public String comentario;
@Column(name="gene")
public String gene;
@Column(name="genomica")
public String genomica;
@Column(name="mrna")
public String mrna;
@Column(name="proteina")
public String proteina;
O erro que ocorre é:
org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: br.gov.inca.progenesdomain.domain.entity.FamiliaEnfermidade.familia in br.gov.inca.progenesdomain.domain.entity.Familia.listaDeEnfermidades
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:552)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:517)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
…ou seja, parece que o mapeamento está errado. Alguem sabe como resolver?
Obrigado!