Sou iniciante e preciso de ajuda

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;
}

}

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;
}

}

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.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.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);
		
		
	    }

}