Problema na Inserção de uma lista usando many-to-many

0 respostas
A

Incluir Equivalência:

<p:selectManyCheckbox value="#{controllerDisciplina.discSelecionadas}" converter="#{DisciplinaConverter}" layout="pageDirection">  
<f:selectItems value="#{controllerDisciplina.listaDisc}" var="tipo" itemValue="#{tipo}" itemLabel="#{tipo.codigo}"/>
</p:selectManyCheckbox>

#{controllerDisciplina.discSelecionadas} > é a lista vazia do objeto Disciplina que recebe os itens selecionadas

#{DisciplinaConverter} >

@FacesConverter(forClass = Disciplina.class)
public class DisciplinaConverter implements Converter{
    
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        
        if(value != null && value.trim().length() > 0){
            Integer codigo = Integer.valueOf(value);
            try {
                DisciplinaRN rn = new DisciplinaRN();
                return rn.carregar(codigo);
            } catch (Exception e) {
                throw new ConverterException("Codigo: " + value + " nao encontrado." + e.getMessage());
            }
        }
        return null;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        
        if(value != null){
            Disciplina bean = (Disciplina)value;
            return bean.getId().toString();
        }
        return "";
    }
    
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Método de salvar

public void salvarEqv(){
        DisciplinaEquivalenteRN rn = new DisciplinaEquivalenteRN();
        for(Disciplina disc:discSelecionadas) {
            this.disciplinaEquivalente.setDisciplina_eq(disc);
            this.disciplinaEquivalente.setDisciplina_pk(this.disciplina);
            rn.salvar(this.disciplinaEquivalente);
        }
        limparDisc();
    }

obs: a classe liga nela mesmo, pois há disciplinas que são equivalentes a elas.

Agora essa loucura n cadastra da o seguinte erro:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to beans.Disciplina

A pergunta é? de onde vem essa String? Estou trabalhando com objetos =/

Minha classe:
@Entity
@SequenceGenerator(allocationSize= 1, name = "idgen", sequenceName = "equivalente_seq")
@Table(name = "disciplina_equivalente")
public class DisciplinaEquivalente implements Serializable {
    
        @Id
        @Column(name="id")
        @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="idgen")
        private Integer id;
        
        @ManyToOne
        @JoinColumn(name="disciplina_pk")
        private Disciplina disciplina_pk;
        
        @ManyToOne
        @JoinColumn(name="disciplina_eq")
        private Disciplina disciplina_eq;

//set-get
Criado 1 de dezembro de 2012
Respostas 0
Participantes 1