Erro ao tentar cadastrar Telefone para Usuario

Olá pessoal da comunidade. Venho a vcs novamente solicitar ajuda. Estou tentando passar um telefone para um usuário que tem relacionamento manytoOne.
Porem quando tento fazer o cadastro do tel aparece um erro:
Message /cadastroDeTelefone.xhtml @35,67 value="#{telefoneBean.usuario.id}": Target Unreachable, [usuario] returned null

Exception

javax.servlet.ServletException: /cadastroDeTelefone.xhtml @35,67 value="#{telefoneBean.usuario.id}": Target Unreachable, [usuario] returned null javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

@Entity
@Table
public class Telefone implements InterfaceUtil, Serializable {
/**
*
*/
private static final long serialVersionUID = 809028860412779457L;

@Id
@GeneratedValue
private Long id;

@ManyToOne(fetch = FetchType.EAGER, optional = false)
private Usuario usuario;

@Enumerated(EnumType.STRING)
private Tipo tipo;

@Column(nullable = false)
private String ddd;

@Column(nullable = false)
private String numero;

public Long getId() {
	return id;
}

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

public Usuario getUsuario() {
	return usuario;
}

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

public Tipo getTipo() {
	return tipo;
}

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

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

@Override
public String toString() {
	return "Telefone [id=" + id + ", usuario=" + usuario + ", tipo=" + tipo + ", ddd=" + ddd + ", numero=" + numero
			+ "]";
}

@Override
public String getLogin() {
	// TODO Auto-generated method stub
	return null;
}

@Override
public String getSenha() {
	// TODO Auto-generated method stub
	return null;
}

}

@Entity
@Table
public class Usuario implements InterfaceUtil, Serializable {
/**
*
*/
private static final long serialVersionUID = 2692397509904849734L;

@Id
@GeneratedValue
private Long id;

@Column(nullable = false)
private String primeiroNome;
private String segundoNome;
private Date dataNascimento;

@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Sexo sexo;
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private Permissao permissao;

@Column(nullable = false)
private boolean habilitacao;

@Column(nullable = false)
private String login;

@Column(nullable = false)
private String senha;

@OneToMany(mappedBy = "usuario")
private List<Telefone> telefones;

@OneToMany(mappedBy = "usuario")
private List<Endereco> enderecos;

public Long getId() {
	return id;
}

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

public String getPrimeiroNome() {
	return primeiroNome;
}

public void setPrimeiroNome(String primeiroNome) {
	this.primeiroNome = primeiroNome;
}

public String getSegundoNome() {
	return segundoNome;
}

public void setSegundoNome(String segundoNome) {
	this.segundoNome = segundoNome;
}

public Date getDataNascimento() {
	return dataNascimento;
}

public void setDataNascimento(Date dataNascimento) {
	this.dataNascimento = dataNascimento;
}

public Sexo getSexo() {
	return sexo;
}

public void setSexo(Sexo sexo) {
	this.sexo = sexo;
}

public Permissao getPermissao() {
	return permissao;
}

public void setPermissao(Permissao permissao) {
	this.permissao = permissao;
}

public boolean isHabilitacao() {
	return habilitacao;
}

public void setHabilitacao(boolean habilitacao) {
	this.habilitacao = habilitacao;
}

public String getLogin() {
	return login;
}

public void setLogin(String login) {
	this.login = login;
}

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

public List<Endereco> getEnderecos() {
	return enderecos;
}

public void setEnderecos(List<Endereco> enderecos) {
	this.enderecos = enderecos;
}

@Override
public String toString() {
	return "Usuario [id=" + id + ", primeiroNome=" + primeiroNome + ", segundoNome=" + segundoNome
			+ ", dataNascimento=" + dataNascimento + ", sexo=" + sexo + ", permissao=" + permissao
			+ ", habilitacao=" + habilitacao + ", login=" + login + ", senha=" + senha + "]";
}

}

Eu acho que é porque você está mapeando pelo usuário, e está retornando null. Mapeia pelo id. E cria o equals e o hash code pro Id e cria uma estratégia pro id @GeneratedValue(strategy = GenerationType.IDENTITY).
E não seria melhor também colocar alguns @size e substituir esse “(nullable = false)” por @NotBlank ou @NotNull ?

O equals e o hash code podem ser gerados automaticamente, tipo getters e setters. No sources, vc vai ver um pouco abaixo do generate getters() and setters. + ou - Assim: generate hashCode() and equals()…