Ciao, è possibile creare una associazione unidirezionale OneToOne tra una tabella con chiave composta e una con chiave semplice ?
Ho fatto n prove ma ho errore "... wrong number of column ..."
Capisco che è una forzatura a livello di database, dovrebbe essere ManyToOne...
Ho cercato in rete ma non ho trovato niente...
Descirvo le classi entità (ho omesso tutto quello che non serve).
Questa è l'entità che vorrei owner:
codice:
@Entity
@Table(name="CliFor")
@IdClass(CliForPK.class)
public class CliForVO implements Serializable {
private String idCliFor = "";
private Integer tipoCliFor = 0;
private FornQuaVO fornQua;
...
public CliForVO(){}
@Id
@Column(length=4)
public String getIdCliFor() {
return this.idCliFor;
}
@Id
public Integer getTipoCliFor() {
return this.tipoCliFor;
}
...
@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy="CliForVO")
@JoinTable(name = "Fornitori",
joinColumns = { @JoinColumn(name = "idForn") },
inverseJoinColumns = @JoinColumn(name = "idCliFor"))
public FornQuaVO getFornQua() {
return fornQua;
}
}
questa è la classe della chiave composta:
codice:
public class CliForPK implements Serializable {
private String idCliFor = "";
private int tipoCliFor = 0;
public CliForPK(){}
public CliForPK(String idCliFor, int tipoCliFor){
this.idCliFor = idCliFor;
this.tipoCliFor = tipoCliFor;
}
public String getIdCliFor() {
return this.idCliFor;
}
public int getTipoCliFor() {
return this.tipoCliFor;
}
...
}
Questa è l'entità "figlia"
codice:
@Entity
@Table(name="Fornitori")
public class FornQuaVO implements Serializable {
private String idForn = "";
...
public FornQuaVO(){}
@Id
@Column(length=4)
public String getIdForn() {
return idForn;
}
...
}
grazie