Hibernate version:
3.0.1
Problem:
Is possible to exist an optional foreign-key in an Hibernate Mapping?
This is my scenario:
All my mapping have composite-id like
Code:
@Embeddable
public class OrgaoPk implements Comparable, Serializable {
private String competencia;
private int codigo;
public OrgaoPk() {}
public OrgaoPk(String competencia, int codigo) {
this.competencia = competencia;
this.codigo = codigo;
}
@Column(name = "fk_competencia", nullable = false, length = 6)
public String getCompetencia() {
return competencia;
}
(...)
@Column(name = "codigo", nullable = false)
public int getCodigo() {
return codigo;
}
(...)
}
Code:
@Entity
@Table(name = "tb_orgao")
public class Orgao implements Comparable, Serializable {
private OrgaoPk pk;
private Servidor titular;
@Id(generate = GeneratorType.NONE)
public OrgaoPk getPk() {
return pk;
}
(...)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "fk_competencia", referencedColumnName = "fk_competencia", insertable = false, updatable = false, nullable = false, primaryKey = true),
@JoinColumn(name = "fk_servidor_titular", referencedColumnName = "matricula", insertable = false, updatable = false, nullable = false, primaryKey = true)
})
public Servidor getTitular() {
return titular;
}
It occurs that field
fk_servidor_titular can be null, but never
fk_competencia
And when this happens is generated an exception, therefore it does not exist in the tb_servidor table.