Jpa não gera foreign key @OneToMany

Pessoal Boa tarde, to com dificuldades na utilização do jpa com banco de dados mysql

tenho uma entidade Usuário onde ela pode ter um ou mais telefones então criei a classe Telefone e na minha classe usuário referenciei com o relacionamnto OneToMany, quando faço a persistencia da classe o jpa consegue persistir os dados nas duas tabelas porem ele deixa a foreign key que seria o usuario_id na tabela de telefones nullo.

vou deixar os códigos aqui.

@Entity
@Table(name = "usuario")
public class Usuario {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;

	@Size(min = 4, max = 15)
	@Column(nullable = false)
	private String nome;

	@Column(nullable = false)
	private String email;

	@Column(nullable = false)
	private String senha;

	@Column(nullable = true)
	@OneToMany(mappedBy ="usuario", cascade = CascadeType.ALL)
	private List<Telefone> telefones;
	
	public Usuario() {
		
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public List<Telefone> getTelefones() {
		return telefones;
	}

	public void setTelefones(List<Telefone> telefones) {
		this.telefones = telefones;
	}
}

e essa é a classe Telefone

@Entity
@Table(name="telefone")
public class Telefone {
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;
	
	@Size(max = 3)
	@Column(nullable = true)
	private String ddd;
	
	@Size(max = 9)
	@Column(nullable = true)
	private String numero;
	
	@Column(nullable = true)
	private String tipo;
	
	@ManyToOne
	@JoinColumn(nullable = false)
	private Usuario usuario;
	
	
	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getDdd() {
		return ddd;
	}

	public void setDdd(String ddd) {
		this.ddd = ddd;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

}

esse é meu MB

@ManagedBean(name = “usuarioController”)
@ViewScoped
public class UsuarioController {

private Usuario usuario;
private UsuarioDao usuarioDao;
private List<Usuario> usuarios;

private Telefone telefone;
private List<Telefone> telefones;


@PostConstruct
public void init() {
	usuarioDao = new UsuarioDao();
	usuario = new Usuario();
	telefone = new Telefone();
	telefones =  new ArrayList<Telefone>();
			
	try {
		usuarios = usuarioDao.listarUsuarios();
	} catch (Exception e) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
		context.getExternalContext().getFlash().setKeepMessages(true);
	}
}


public Usuario getUsuario() {
	return usuario;
}

public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}

public List<Usuario> getUsuarios() {
	return usuarios;
}

public void setUsuarios(List<Usuario> usuarios) {
	this.usuarios = usuarios;
}

public Telefone getTelefone() {
	return telefone;
}


public void setTelefone(Telefone telefone) {
	this.telefone = telefone;
}


public List<Telefone> getTelefones() {
	return telefones;
}

public void setTelefones(List<Telefone> telefones) {
	this.telefones = telefones;
}


public String inserir() {
	try {
		telefones.add(telefone);
		usuario.setTelefones(telefones);
		usuarioDao.inserir(usuario);
		usuarios = usuarioDao.listarUsuarios();
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage("Usuario cadastrado com Sucesso!"));
		context.getExternalContext().getFlash().setKeepMessages(true);

	} catch (Exception e) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
		context.getExternalContext().getFlash().setKeepMessages(true);
	}
	return "index";
}

public String atualizar() {
	try {
		usuarioDao.atualizar(usuario);
		usuarios = usuarioDao.listarUsuarios();

		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage("Lembrete editado com sucesso!"));
		context.getExternalContext().getFlash().setKeepMessages(true);
	} catch (Exception e) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
		context.getExternalContext().getFlash().setKeepMessages(true);
	}

	return "home";
}

public void selecionar() {

	try {
		usuario = usuarioDao.selecionar(usuario.getId());

		if (usuario == null || usuario.getId() == 0) {
			usuario = new Usuario();
			throw new Exception("Usuário não encontrado.");
		}

	} catch (Exception e) {
		FacesMessage message = new FacesMessage(e.getMessage());
		message.setSeverity(FacesMessage.SEVERITY_ERROR);
		FacesContext.getCurrentInstance().addMessage(null, message);
	}
}

public String remover() {
	try {
		usuarioDao.excluir(usuario.getId());
		usuarios = usuarioDao.listarUsuarios();

		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage("Lembrete removido com sucesso!"));
		context.getExternalContext().getFlash().setKeepMessages(true);
	} catch (Exception e) {
		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage()));
		context.getExternalContext().getFlash().setKeepMessages(true);
	}
	return "home";
}

}

e esse é meu XHTML

<h:head>

Adicionar Usuário

</h:head>
<h:body>
<h:messages />
<h:form>
<p:panel header=“Cadastro de usuário”>

		<h:panelGrid columns="3">
			<p:outputLabel value="Nome:" />
			<p:inputText id="nome" value="#{usuarioController.usuario.nome}" required="true">
				<f:validateLength minimum="3" maximum="255" />
			</p:inputText>
			<h:message for="nome" />

			<p:outputLabel value="Email:" />
			<p:inputText id="email" value="#{usuarioController.usuario.email}" required="true">
				<f:validateLength minimum="3" maximum="255" />
			</p:inputText>
			<h:message for="email" />

			<p:outputLabel value="Senha:" />
			<p:password id="senha" value="#{usuarioController.usuario.senha}" required="true">
			</p:password> 
			<h:message for="senha" />
			
			<p:outputLabel value="Telefone:" />
			<h:panelGrid columns="6">	
			<p:outputLabel value="ddd"></p:outputLabel>
			<p:inputText id="ddd" value="#{usuarioController.telefone.ddd}" required="true"> </p:inputText> 
			<p:outputLabel value="numero"></p:outputLabel>
			<p:inputText id="telefone" value="#{usuarioController.telefone.numero}" required="true"> </p:inputText> 
			<p:outputLabel for="tipo" value="Tipo:" />
	        <p:selectOneRadio id="tipo" value="#{usuarioController.telefone.tipo}" unselectable="true">
	            <f:selectItem itemLabel="Fixo" itemValue="Fixo" />
	            <f:selectItem itemLabel="movel" itemValue="Movel" />
	        </p:selectOneRadio>
			<h:message for="telefone" />
			</h:panelGrid>
		</h:panelGrid>

		<p:commandButton value="Enviar" action="#{usuarioController.inserir}" />
	</p:panel>
</h:form>

</h:body>