E ai pessoal tudo bom ??
Estou com o seguinte problema tenho uma tabela que tem uma referencia para ela mesma com a anotação @OneToOne so que ela nao é obrigatoria , ou seja nao pode haver verificação de integridade no banco mas o problema é que o hibernate sempre gera essa constraint pra mim , tenho como falar pra ele apenas mapear sem que crie a constraint ??
.
.
@Entity
@Table(name="UNIDADE"))
public class Unidade {
@Id
@GeneratedValue
@Column(name="UNI_ID")
private Long id;
@Column(name="LOG_ATIVO")
private char ativo='S';
@Column(name="UNI_NOME")
private String nome;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="DES_ID")
@ForeignKey(name="DESTINATARIO_UNIDADE")
private Destinatario destinatario;
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="UNI_UNIDADEPAI")
@ForeignKey(name="UNIDADE_UNIDADE")
private Unidade unidadepai;
@Column(name="UNI_ENDCOMPLEMENTO")
@Lob
private String endereco;
//Aqui eu não quero que ele crie a constraint pois essa coluna pode ser null
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="UNI_IDREFERENCIA")
private Unidade unidadereferencia;
//Aqui eu não quero que ele crie a constraint pois essa coluna pode ser null
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="DES_IDREFERENCIA")
private Destinatario destinatarioreferencia;
@Column(name="UNI_LIBERADA")
private char liberada='N';
public void setId(Long id){
this.id=id;
}
public Long getId(){
return this.id;
}
public void setAtivo(char ativo){
this.ativo=ativo;
}
public char getAtivo(){
return this.ativo;
}
public void setNome(String nome){
this.nome=nome;
}
public String getNome(){
return this.nome;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getEndereco() {
return endereco;
}
public void setDestinatario(Destinatario destinatario) {
this.destinatario = destinatario;
}
public Destinatario getDestinatario() {
return destinatario;
}
public void setUnidadepai(Unidade unidadepai) {
this.unidadepai = unidadepai;
}
public Unidade getUnidadepai() {
return unidadepai;
}
public void setUnidadereferencia(Unidade unidadereferencia) {
this.unidadereferencia = unidadereferencia;
}
public Unidade getUnidadereferencia() {
return unidadereferencia;
}
public void setDestinatarioreferencia(Destinatario destinatarioreferencia) {
this.destinatarioreferencia = destinatarioreferencia;
}
public Destinatario getDestinatarioreferencia() {
return destinatarioreferencia;
}
public void setLiberada(char liberada) {
this.liberada = liberada;
}
public char getLiberada() {
return liberada;
}
}
Basicamente queria saber como mapear @OneToOne sem que ele crie uma chave estrangeira ?? Alguem dá uma luz ?? Procurei na documentação isso e não encontrei…