I have three type of users and a user called técnico has many Items .
When i try to save an Item, receive this error:
Grave: javax.persistence.PersistenceException: org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of br.com.confiabilidade.model.Usuario.codigo
my mapped class :
Code:
@Entity
@Table(name = "usuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
private Long codigo;
private String email;
private String login;
private String nome;
private Permissao permissao;
private Usuario chefe;
private Empresa empresa;
private Area area;
private List<Usuario> subordinados = new ArrayList<>();
private String senha;
private Telefone telafone;
private Especialidade especialidade;
@Id
@GeneratedValue
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
@OneToOne
@JoinColumn(name = "codigo_area")
public Area getArea() {
return area;
}
public void setArea(Area area) {
this.area = area;
}
@Pattern(regexp = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\."
+ "[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"
+ "(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", message = "email inválido tente novamente!!!")
@NotBlank
@Column(name = "email", nullable = false, length = 80)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Embedded
public Telefone getTelefone() {
return telafone;
}
public void setTelefone(Telefone telafone) {
this.telafone = telafone;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
@NotBlank
@Column(name = "nome", nullable = false, length = 20)
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome== null ? null :nome.toUpperCase().trim();
}
@Enumerated(EnumType.STRING)
public Permissao getPermissao() {
return permissao;
}
public void setPermissao(Permissao permissao) {
this.permissao = permissao;
}
@ManyToOne
@JoinColumn(name = "codigo_chefe")
public Usuario getChefe() {
return chefe;
}
public void setChefe(Usuario chefe) {
this.chefe = chefe;
}
@OneToMany(mappedBy = "chefe", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
public List<Usuario> getSubordinados() {
return subordinados;
}
public void setSubordinados(List<Usuario> subordinados) {
this.subordinados = subordinados;
}
@ManyToOne
@JoinColumn(name = "codigo_empresa")
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
@ManyToOne
@JoinColumn(name = "codigo_especialidade")
public Especialidade getEspecialidade() {
return this.especialidade;
}
public void setEspecialidade(Especialidade especialidade) {
this.especialidade = especialidade;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Usuario other = (Usuario) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
}
Bean:
Code:
public void associar() {
this.itemSelecionado = cadastroItemService.salvar(this.itemSelecionado);
FacesUtil.addInfoMessage("Sucess!");
}