Qual é anotação que deve se usada para forçar que o relacionamento entre as tabelas seja obrigatório?
Qual é anotação que deve se usada para forçar que o relacionamento entre as tabelas seja obrigatório?
@OneToOne @JoinColumn(name = "sua_fk" , nullable=false) private SuaClasse classe;
Acredito que o constraint not null não será criada se o esquema já existir. Então, insira o constraint via sql ou apague o DB e deixar o hibernate gerar novamente.
Teste e deixo o feedback, boa sorte!
Breno, primeiramente obrigado pelas respostas. Realizei o procedimento conforme sugerido, porém o esquema foi gerado novamente sem a obrigatoriedade.
package br.com.caelum.financas.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Aluno {
@OneToOne
private Perfil perfil;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nome;
public Perfil getPerfil() {
return perfil;
}
public void setPerfil(Perfil perfil) {
this.perfil = perfil;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
package br.com.caelum.financas.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
@Entity
public class Perfil {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String nome;
@OneToOne
@JoinColumn(name = "id", nullable = false)
private Aluno aluno;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
}
package br.com.caelum.financas.teste;
import javax.persistence.EntityManager;
import br.com.caelum.financas.modelo.Aluno;
import br.com.caelum.financas.modelo.Perfil;
import br.com.caelum.financas.util.JPAUtil;
public class TesteAluno {
public static void main(String[] args) {
Aluno aluno = new Aluno();
aluno.setNome("João");
EntityManager manager = new JPAUtil().getEntityManager();
manager.getTransaction().begin();
manager.persist(aluno);
manager.getTransaction().commit();
}
}
Resultado Banco de Dados:
'1', 'João', NULL