Boa noite pessoal
Estou estudando em casa e tentei adaptar uns exercícios da apostila da Caelum (FJ21) para um projeto hipotético de um cursinho pré-vestibular.
Criei meus Models, fiz as anotações do Hibernate, vi que as tabelas foram criadas e consigo persistir nelas, mas quando fui consultar o banco notei que o campo das FK’s de duas tabelas relacionadas permanecem “null”. Estou usando o Eclipse e não aparece nenhum erro quando crio os objetos para preencher as tabelas.
Procurei por tópicos afins mas sou iniciante e sozinho não consegui entender as soluções propostas em outros casos.
Então se alguém puder me ajudar eu agradeço.
Os meus Models são uma classe InscricaoBEANS que é composta por um List de EnderecoBEANS e um List de TelefoneBEANS, entre outros atributos. Então a ideia é que cada Inscrição possa conter mais de 1 ou mais endereços e 1 ou mais telefones.
InscricaoBEANS
package br.net.cursinho.teste;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="inscricao",schema="fj21")
public class InscricaoBEANS {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id_inscricao;
private String nome_inscricao;
private String email_inscricao;
@Temporal(TemporalType.DATE)
private Calendar dt_nasc_inscricao;
private String rg_inscricao;
private String cpf_inscricao;
@OneToMany(mappedBy="inscricao", targetEntity=EnderecoBEANS.class, cascade=CascadeType.ALL)
private List<EnderecoBEANS> endereco;
@OneToMany(mappedBy="inscricao", targetEntity=TelefoneBEANS.class, cascade=CascadeType.ALL)
private List<TelefoneBEANS> telefone;
public int getId_inscricao() {
return id_inscricao;
}
public void setId_inscricao(int id_inscricao) {
this.id_inscricao = id_inscricao;
}
public String getNome_inscricao() {
return nome_inscricao;
}
public void setNome_inscricao(String nome_inscricao) {
this.nome_inscricao = nome_inscricao;
}
public String getEmail_inscricao() {
return email_inscricao;
}
public void setEmail_inscricao(String email_inscricao) {
this.email_inscricao = email_inscricao;
}
public Calendar getDt_nasc_inscricao() {
return dt_nasc_inscricao;
}
public String getDt_nasc_inscricao_formatada() {
SimpleDateFormat data_formatada = new SimpleDateFormat("dd-MM-yyyy");
return data_formatada.format(getDt_nasc_inscricao().getTime());
}
public void setDt_nasc_inscricao(Calendar dt_nasc_inscricao) {
this.dt_nasc_inscricao = dt_nasc_inscricao;
}
public String getRg_inscricao() {
return rg_inscricao;
}
public void setRg_inscricao(String rg_inscricao) {
this.rg_inscricao = rg_inscricao;
}
public String getCpf_inscricao() {
return cpf_inscricao;
}
public void setCpf_inscricao(String cpf_inscricao) {
this.cpf_inscricao = cpf_inscricao;
}
public List<EnderecoBEANS> getEndereco() {
return endereco;
}
public void setEndereco(EnderecoBEANS endereco) {
this.endereco = new ArrayList<EnderecoBEANS>();
this.endereco.add(endereco);
}
public List<TelefoneBEANS> getTelefone() {
return telefone;
}
public void setTelefone(TelefoneBEANS telefone) {
this.telefone = new ArrayList<TelefoneBEANS>();
this.telefone.add(telefone);
}
}
EnderecoBEANS
package br.net.cursinho.teste;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="endereco",schema="fj21")
public class EnderecoBEANS {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id_end;
private String rua_end;
private int num_end;
private String compl_end;
private String bairro_end;
private String cidade_end;
private String estado_end;
private String cep_end;
@ManyToOne
@JoinColumn(name="id_inscricao", insertable=true, updatable=true)
private InscricaoBEANS inscricao;
public int getId_end() {
return id_end;
}
public void setId_end(int id_end) {
this.id_end = id_end;
}
public String getRua_end() {
return rua_end;
}
public void setRua_end(String rua_end) {
this.rua_end = rua_end;
}
public int getNum_end() {
return num_end;
}
public void setNum_end(int num_end) {
this.num_end = num_end;
}
public String getCompl_end() {
return compl_end;
}
public void setCompl_end(String compl_end) {
this.compl_end = compl_end;
}
public String getBairro_end() {
return bairro_end;
}
public void setBairro_end(String bairro_end) {
this.bairro_end = bairro_end;
}
public String getCidade_end() {
return cidade_end;
}
public void setCidade_end(String cidade_end) {
this.cidade_end = cidade_end;
}
public String getEstado_end() {
return estado_end;
}
public void setEstado_end(String estado_end) {
this.estado_end = estado_end;
}
public String getCep_end() {
return cep_end;
}
public void setCep_end(String cep_end) {
this.cep_end = cep_end;
}
}
TelefoneBEANS
package br.net.cursinho.teste;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="telefone",schema="fj21")
public class TelefoneBEANS {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id_telefone;
private String fixo_telefone;
private String cel_telefone;
@ManyToOne
@JoinColumn(name="id_inscricao", insertable=true, updatable=true)
private InscricaoBEANS inscricao;
public int getId_telefone() {
return id_telefone;
}
public void setId_telefone(int id_telefone) {
this.id_telefone = id_telefone;
}
public String getFixo_telefone() {
return fixo_telefone;
}
public void setFixo_telefone(String fixo_telefone) {
this.fixo_telefone = fixo_telefone;
}
public String getCel_telefone() {
return cel_telefone;
}
public void setCel_telefone(String cel_telefone) {
this.cel_telefone = cel_telefone;
}
}
Inserir_na_Tabela.java
package br.net.cursinho.teste;
import java.util.Calendar;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Inserir_na_Tabela {
public static void main(String[] args) {
InscricaoBEANS inscricao = new InscricaoBEANS();
inscricao.setNome_inscricao("João Silva");
inscricao.setRg_inscricao("1111111");
inscricao.setCpf_inscricao("222222222-22");
Calendar data_digitada = Calendar.getInstance();
data_digitada.set(Calendar.YEAR,1979);
data_digitada.set(Calendar.MONTH,7);
data_digitada.set(Calendar.DAY_OF_MONTH,31);
inscricao.setDt_nasc_inscricao(data_digitada);
inscricao.setEmail_inscricao("joao_silva@yahoo.com.br");
EnderecoBEANS endereco = new EnderecoBEANS();
endereco.setRua_end("Rua do João");
endereco.setNum_end(100);
endereco.setCompl_end("fundos");
endereco.setBairro_end("Jardim Jardim");
endereco.setCidade_end("São Paulo");
endereco.setEstado_end("SP");
endereco.setCep_end("10000-000");
inscricao.setEndereco(endereco);
TelefoneBEANS telefone = new TelefoneBEANS();
telefone.setFixo_telefone("11 00000-1111");
telefone.setCel_telefone("11 00001-2222");
inscricao.setTelefone(telefone);
EntityManagerFactory factory = Persistence.createEntityManagerFactory("cursinho");
EntityManager manager = factory.createEntityManager();
manager.getTransaction().begin();
manager.persist(inscricao);
manager.getTransaction().commit();
System.out.println("A inscrição de " + inscricao.getNome_inscricao() + " foi registrada sobre o id " + inscricao.getId_inscricao());
manager.close();
}
}
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="cursinho">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>br.net.cursinho.teste.InscricaoBEANS</class>
<class>br.net.cursinho.teste.EnderecoBEANS</class>
<class>br.net.cursinho.teste.TelefoneBEANS</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/fj21?serverTimezone=America/Sao_Paulo"/>
<property name="javax.persistence.jdbc.user" value="root"/>
<property name="javax.persistence.jdbc.password" value="XXXXXXX" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
E pela busca no banco os dados da FK não foram preenchidos
O que será que eu fiz de errado ?
Valeu !!
