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()…