Galera do PJ, sou novo aqui e tenho uma duvida talvez de iniciante.
Tenho uma aplicação que cadastra um usuario, e nela eu criei um select one menu para listar todos os niveis de usuario do sistema.
Só que o select one menu retorna uma string e minha classe usuario tem um atributo de perfil e por isso dá erro em execução.
Se alguem tiver uma luz para esse problema eu agradeço a ajuda desde já.
Classe Usuario
@Entity
@NamedQueries( {
@NamedQuery(name = "LoginUsuario", query = "SELECT user FROM Usuario user WHERE user.login = :login AND user.senha = :senha"),
@NamedQuery(name = "Login.Matricula", query = "SELECT user FROM Usuario user WHERE user.login = :login AND user.matricula = :matricula"),
@NamedQuery(name = "Login", query = "SELECT user FROM Usuario user WHERE user.login = :login"),
@NamedQuery(name = "Nome", query = "SELECT user FROM Usuario user WHERE user.nome = :nome"),
@NamedQuery(name = "Nome.Matricula", query = "SELECT user FROM Usuario user WHERE user.nome = :nome AND user.matricula = :matricula")})
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Column(nullable = false)
private String nome;
@Id
@Column(nullable = false)
private int matricula;
@Column(nullable = false)
private int cpf;
@Column(nullable = false)
private int rg;
//@Column(nullable = false)
private String patente;
//private String unidadeOperacional;
@Column(nullable = false)
private String login;
@Column(nullable = false)
private String senha;
private String secao;
private String email;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "Perfil_id", referencedColumnName = "id")
// @Column(nullable = false)
private Perfil perfil;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "Unidade_id", referencedColumnName = "id")
// @Column(nullable = false)
private Unidade unidade;
Classe Perfil
@Entity
@NamedQuery(name = "ConsultaPerfil", query = "SELECT perfil FROM Perfil perfil")
public class Perfil implements Serializable{
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private String id;
@Column(nullable = false)
private String descricao;
@OneToMany(mappedBy = "perfil", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Usuario> usuarioCollection;
codigo do select one menu
<h:selectOneMenu value="#{actionFormUsuario.usuario.patente}" id="patente">
<f:selectItem itemLabel="Administrador" itemValue="1" />
<f:selectItem itemLabel="Operacional" itemValue="2"/>
<f:selectItem itemLabel="Estrategico" itemValue="3"/>
<f:selectItem itemLabel="Tatico" itemValue="4"/>
</h:selectOneMenu>
Espero que minhas informações possam ser util para alguem me ajudar