Bom dia galera,
Então estou enfrentando alguns problemas com esse picklist. Quando eu tento gravar os usuários que estou vinculando ele estora uma exceção informando que eu não posso
converter String em Long. Isso ocorre porque estou tentando gravar uma Lista no banco onde está no banco o campo é um inteiro. Mais o que estou fazendo de errado no mapeamento do hibernate ou talvez nem seja no mapeamento, seja na propria logica.
@Entity
public class Sistema implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long idSistema;
private String nomeSistema;
private String descricao;
private String equipe;
@ManyToMany(fetch=FetchType.EAGER)
@Embedded
private List<PerfilUsuario> usuarios = new ArrayList<PerfilUsuario>();
@Valid
@ManyToOne
private PerfilUsuario vinculado;
public Long getIdSistema() {
return idSistema;
}
public void setIdSistema(Long idSistema) {
this.idSistema = idSistema;
}
public String getNomeSistema() {
return nomeSistema;
}
public void setNomeSistema(String nomeSistema) {
this.nomeSistema = nomeSistema;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getEquipe() {
return equipe;
}
public void setEquipe(String equipe) {
this.equipe = equipe;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public PerfilUsuario getVinculado() {
return vinculado;
}
public void setVinculado(PerfilUsuario vinculado) {
this.vinculado = vinculado;
}
public List<PerfilUsuario> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<PerfilUsuario> usuarios) {
this.usuarios = usuarios;
}
}
@ManagedBean
@ViewScoped
public class SistemaBean implements Serializable{
private static final long serialVersionUID = 1L;
private Sistema sistema = new Sistema();
private List<Sistema> sistemas;
private DualListModel<PerfilUsuario> usuarioModel;
private List<PerfilUsuario> usuariosSelecionados = new ArrayList<PerfilUsuario>();
private List<PerfilUsuario> usuarios = new ArrayList<PerfilUsuario>();
private List<PerfilUsuario> perfilUsuarios;
public String gravar(){
DAO<Sistema> dao = new DAO<Sistema>(Sistema.class);
usuarios = usuarioModel.getSource();
usuariosSelecionados = usuarioModel.getTarget();
if(sistema.getIdSistema() == null){
sistema.setUsuarios(usuariosSelecionados);
dao.adiciona(sistema);
}else{
dao.atualiza(sistema);
}
//Lista os dados em tempo real com o banco
this.sistemas = dao.listaTodos();
//Quando for adicionar chama-se denovo o metodo para limpar os campos
this.sistema = new Sistema();
return "cadastroSistema?faces-redirect=true";
}
@PostConstruct
public void carregaUsuarios() {
System.out.println("Carregando usuários...");
perfilUsuarios = new DAO<PerfilUsuario>(PerfilUsuario.class).listaTodos();
}
public List<PerfilUsuario> getPerfilUsuarios() {
return perfilUsuarios;
}
public DualListModel<PerfilUsuario> getUsuarioModel(){
if(this.usuarioModel==null){
this.usuarioModel = new DualListModel<PerfilUsuario>(getPerfilUsuarios(), new ArrayList<PerfilUsuario>());
}
return this.usuarioModel;
}
public String remove(Sistema sistema){
DAO<Sistema> dao = new DAO<Sistema>(Sistema.class);
dao.remove(sistema);
this.sistemas = dao.listaTodos();
return "cadastroSistema?faces-redirect=true";
}
public Sistema getSistema() {
return sistema;
}
public void setSistema(Sistema sistema) {
this.sistema = sistema;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public List<PerfilUsuario> getUsuariosSelecionados() {
return usuariosSelecionados;
}
public void setUsuariosSelecionados(List<PerfilUsuario> usuariosSelecionados) {
this.usuariosSelecionados = usuariosSelecionados;
}
public List<PerfilUsuario> getUsuarios() {
return usuarios;
}
public void setUsuarios(List<PerfilUsuario> usuarios) {
this.usuarios = usuarios;
}
public List<Sistema> getSistemas() {
return sistemas;
}
public void setSistemas(List<Sistema> sistemas) {
this.sistemas = sistemas;
}
public void setUsuarioModel(DualListModel<PerfilUsuario> usuarioModel) {
this.usuarioModel = usuarioModel;
}
public void setPerfilUsuarios(List<PerfilUsuario> perfilUsuarios) {
this.perfilUsuarios = perfilUsuarios;
}
}
Para facitar a leitura, quando eu coloca para gravar pegando o getPerfilUsuario ele grava só que grava os usuários existentes. E quando eu tento setar usuariosVinculados ele da a exceção de conversão.
Obs.: Metodo gravar do SistemaBean