Você realmente precisa do converter ? Por que vc não tenta usar apenas o ID ?
Pelo que entendi vc tem uma entity Recurso e dentro dela uma referencia pra um outra entity TipoRecurso, é isso?
Provavelmente TipoRecurso tem um id do tipo Long.
Então seu código ficaria:
Eu uso exatamente dessa forma mas sem precisar fazer essa busca, pois o id do TipoRecurso já esta setado.
Comenta essa linha e tenta salvar e depois alterar.
Boa tarde pessoal.
Estou passando por um problema parecido, mas o que parece ser é que o meu converter não está funcionando corretamente.
Acredito que é porque estou querendo realizar a injeção de dependencia através na anotation @EJB dentro de um converter.
Isso está correto?
Segue o código do converter. Alguém pode me ajudar?
@FacesConverter(forClass = Estado.class, value="estadoConverter")
public class EstadoConverter implements Converter{
@EJB
private EstadoRepository estadoRepository;
@Override
public Object getAsObject(FacesContext context, UIComponent component, String id) {
try{
Estado estado;
Long idEstado = Long.parseLong(id);
estado = this.estadoRepository.pesquisaPorId(idEstado);
return estado;
}
catch(Exception e){
throw new SisCgException("Erro ao converter Estado!");
}
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
Estado estado = (Estado) value;
return estado.getId() + "";
}
}
Aqui o Código do meu Managed Bean que adiciona os SelectsItems:
public List<Estado> getListaEstados(){
return this.estadoRepository.pesquisarTodos();
}
public List<SelectItem> getSelectEstados(){
List<SelectItem> listaSelect = new ArrayList<SelectItem>();
try{
for(Estado estadoEach : this.getListaEstados()){
SelectItem si = new SelectItem();
si.setLabel(estadoEach.getNome());
si.setValue(estado.getId());
listaSelect.add(si);
}
return listaSelect;
} catch(Exception e){
throw new SisCgException("Não foi possível obter a lista de Estados");
}
}
Aqui o código do meu xhtml, o componente que chama o método do managed bean