Hi.
I have some issues mapping a ManyToOne relation with an entitty having composite EmbeddedId.
I have the following situation:
TABLE 1:
########
Code:
@Entity
@Table(name = "punti_campionamento_t009")
public class PuntoCampionamento {
private long puntoCampionamentoId;
private Set<PuntoCampionamentoIndagine> puntoCampionamentoIndagine = new HashSet<>();
......
......
@OneToMany(fetch=FetchType.LAZY, mappedBy="pk.puntoCampionamento")
public Set<PuntoCampionamentoIndagine> getPuntoCampionamentoIndagine() {
return puntoCampionamentoIndagine;
}
public void setPuntoCampionamentoIndagine(Set<PuntoCampionamentoIndagine> puntoCampionamentoIndagine) {
this.puntoCampionamentoIndagine = puntoCampionamentoIndagine;
}
}
TABBLE 2:
##########
Code:
@Entity
@Table(name = "tipo_indagine_t005")
public class TipoIndagine implements {
private long tipoIndagineId;
........
........
}
TABLE 3: PK of the first two entities
########
Code:
@Embeddable
public class PuntoCampionamentoIndagineId implements Serializable {
private PuntoCampionamento puntoCampionamento;
private TipoIndagine tipoIndagine;
@ManyToOne(fetch=FetchType.LAZY)
public PuntoCampionamento getPuntoCampionamento() {
return puntoCampionamento;
}
public void setPuntoCampionamento(PuntoCampionamento puntoCampionamento) {
this.puntoCampionamento = puntoCampionamento;
}
@ManyToOne(fetch=FetchType.LAZY)
public TipoIndagine getTipoIndagine() {
return tipoIndagine;
}
public void setTipoIndagine(TipoIndagine tipoIndagine) {
this.tipoIndagine = tipoIndagine;
}
}
TABLE 4:
########
Code:
@Entity
@Table(name = "punti_campionamento_indagine_t013")
@AssociationOverrides({
@AssociationOverride(name="pk.puntoCampionamento", joinColumns = @JoinColumn(name="p_punto_campionamento", nullable = false)),
@AssociationOverride(name="pk.tipoIndagine", joinColumns = @JoinColumn(name="p_tipo_indagine", nullable = false)),
})
public class PuntoCampionamentoIndagine {
private long puntoCampionamentoIndagineSerial;
private Set<Campione> campioni;
private PuntoCampionamentoIndagineId pk = new PuntoCampionamentoIndagineId();
@EmbeddedId
public PuntoCampionamentoIndagineId getPk() {
return pk;
}
public void setPk(PuntoCampionamentoIndagineId pk) {
this.pk = pk;
}
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "p_punto_campionamento_indagine", nullable = false, unique = true)
public long getPuntoCampionamentoIndagineSerial() {
return puntoCampionamentoIndagineSerial;
}
public void setPuntoCampionamentoIndagineSerial(long puntoCampionamentoIndagineSerial) {
this.puntoCampionamentoIndagineSerial = puntoCampionamentoIndagineSerial;
}
???????????????????????????????????????????????????????
???????? ---> THIS IS THE "ONE TO MANY" THAT doesn't work
???????????????????????????????????????????????????????
@OneToMany(fetch=FetchType.LAZY, mappedBy="puntoCampionamentoIndagine")
public Set<Campione> getCampioni() {
return campioni;
}
public void setCampioni(Set<Campione> campioni) {
this.campioni = campioni;
}
}
TABLE 5:
#########
Code:
@Entity
@Table(name = "campioni_t011")
public class Campione {
private long campioneId;
//--> Property related to TABLE 4
private PuntoCampionamentoIndagine puntoCampionamentoIndagine;
//?????????????????????????????????????????????????????????????????????????????????????????
//--> what i have to set here to make relation with table 3 (PuntoCampionamentoIndagine) ???
//--> The foreign key in datatabse is on the table id (getPuntoCampionamentoIndagineSerial)
//??????????????????????????????????????????????????????????????????????????????????????????
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="p_punto_campionamento_indagine", referencedColumnName="p_punto_campionamento_indagine")
})
public PuntoCampionamentoIndagine getPuntoCampionamentoIndagine() {
return puntoCampionamentoIndagine;
}
public void setPuntoCampionamento(PuntoCampionamentoIndagine puntoCampionamentoIndagine) {
this.puntoCampionamentoIndagine = puntoCampionamentoIndagine;
}
}
The problem is on entity "Campione". I can not create the proper relation with the entity "PuntoCampionamentoIndagine".