Bom dia,
Meu problema e o seguinte, tenho duas entidades Semáforo e Localização, o relacionamento que estabeleci foi o de que um um semáforo só pode ter uma localização. Eu realizo a inserção dos dados através de duas classes testes “RodaSemaforo” e “RodaLocalização” porem quando eu tento inserir os dados referentes a localização do semáforo, o campo chave estrangeira ou fica nulo, ou ocorre a exceção mostrada abaixo. o que estou fazendo errado ? Já tentei colocar um Cascade.ALL porem se eu fizer isso e tentar incluir a localização, e inserido um novo registro na tabela de semáforos, porem nulo.
package br.com.FowardWaySystem.Util;
import br.com.FowardWaySystem.DAO.LocalizacaoDAO;
import br.com.FowardWaySystem.DAO.SemaforoDAO;
import br.com.FowardWaySystem.Entidades.Localizacao;
import br.com.FowardWaySystem.Entidades.Semaforo;
public class RodaLocalizacao {
public static void main(String[] args) {
Incluirlocalizacao();
}
public static void Incluirlocalizacao() {
Localizacao localizacao = new Localizacao();
LocalizacaoDAO loc = new LocalizacaoDAO();
Semaforo semdao = new Semaforo();
localizacao.setBairro("Taquaeil");
localizacao.setCEP("0096921");
localizacao.setCidade("BH");
localizacao.setNumero("10");
localizacao.setRua("Rua quize");
localizacao.setEstado("MG");
localizacao.setSemaforo(semdao);
loc.incluir(localizacao);
}
}
package br.com.FowardWaySystem.Util;
import java.util.Set;
import br.com.FowardWaySystem.DAO.LocalizacaoDAO;
import br.com.FowardWaySystem.DAO.SemaforoDAO;
import br.com.FowardWaySystem.Entidades.Localizacao;
import br.com.FowardWaySystem.Entidades.Semaforo;
public class RodaSemaforo {
public static void main(String[] args) {
IncluirSemaforo();
}
public static void IncluirSemaforo() {
Semaforo semaforo = new Semaforo();
SemaforoDAO semDAO = new SemaforoDAO();
Localizacao loc = new Localizacao();
semaforo.setCodigo("QP133");
semaforo.setStatus("Ativo");
loc.setSemaforo(semaforo);
semDAO.incluir(semaforo);
}
/*public static void Incluirlocalizacao(Semaforo semaforo) {
Localizacao localizacao = new Localizacao();
localizacao.setBairro("Taquaeil");
localizacao.setCEP("0096921");
localizacao.setCidade("BH");
localizacao.setNumero("10");
localizacao.setRua("Rua quize");
localizacao.setEstado("MG");
localizacao.setSemaforo(semaforo);
}
*/
}
package br.com.FowardWaySystem.Entidades;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = “Localizacao”)
public class Localizacao {
@Id
@GeneratedValue
private int idlocalizacao;
@Column(name ="numero", length = 6, nullable = true)
private String numero;
@Column(name ="rua", length = 50, nullable = false)
private String rua;
@Column(name ="bairro", length = 50, nullable = false)
private String bairro;
@Column(name ="Cidade", length = 50, nullable = false)
private String Cidade;
@Column(name ="Estado", length = 50, nullable = false)
private String Estado;
@Column(name ="CEP", length = 10, nullable = true)
private String CEP;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn ( name = "idSemaforo")
private Semaforo semaforo;
public int getId() {
return idlocalizacao;
}
public void setId(int idlocalizacao) {
this.idlocalizacao = idlocalizacao;
}
public String getNumero() {
return numero;
}
public void setNumero(String numero) {
this.numero = numero;
}
public String getRua() {
return rua;
}
public void setRua(String rua) {
this.rua = rua;
}
public String getBairro() {
return bairro;
}
public void setBairro(String bairro) {
this.bairro = bairro;
}
public String getCidade() {
return Cidade;
}
public void setCidade(String cidade) {
Cidade = cidade;
}
public String getEstado() {
return Estado;
}
public void setEstado(String estado) {
Estado = estado;
}
public String getCEP() {
return CEP;
}
public void setCEP(String cEP) {
CEP = cEP;
}
public int getIdlocalizacao() {
return idlocalizacao;
}
public void setIdlocalizacao(int idlocalizacao) {
this.idlocalizacao = idlocalizacao;
}
public Semaforo getSemaforo() {
return semaforo;
}
public void setSemaforo(Semaforo semaforo) {
this.semaforo = semaforo;
}
}
package br.com.FowardWaySystem.Entidades;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = “Semaforo”)
public class Semaforo {
@Id
@GeneratedValue
private int id;
@Column(name ="codigo", length = 6, nullable = false)
private String codigo;
@Column(name ="Status", length = 10, nullable = false)
private String status;
@OneToOne(mappedBy ="semaforo", cascade = CascadeType.ALL,
fetch = FetchType.LAZY)
private Localizacao Localizacoes;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Localizacao getLocalizacoes() {
return Localizacoes;
}
public void setLocalizacoes(Localizacao localizacoes) {
Localizacoes = localizacoes;
}
}