Tive que fazer umas gambiarras, o que deu pra tirar eu tirei, mas precisava mostrar uma lista de cursos pra adicionar ao aluno, então fiz assim...
na tela:
if(e.getActionCommand().equals("Salvar")){
Aluno aluno = new Aluno();
aluno.setNome(txtNome.getText());
aluno.setCep(txtCep.getText());
aluno.setCpf(txtCpf.getText());
aluno.setTel(txtTel.getText());
List<Curso> cursos = new ArrayList<Curso>();
if(!lstCursos.isSelectionEmpty()){
cursos = control.criarLista(lstCursos.getSelectedValues());
aluno.setCursos(cursos);
List<Aluno> alunos = new ArrayList<Aluno>();
for(Curso curso : cursos){
alunos = curso.getAlunos();
alunos.add(aluno);
curso.setAlunos(alunos);
populei a JList com uma List de String com o nome dos cursos
public List<String> listar() throws Exception {
String sql="SELECT c.name FROM curso c";
SQLQuery q = getSession().createSQLQuery(sql);
return (List<String>) q.list();
}
Depois busquei os nomes um por um retornando o curso com aquele nome
public List<Curso> buscaCurso(String nome) {
List cursos = getSession().createCriteria(Curso.class)
.add( Restrictions.like("name", nome) )
.list();
return cursos;
}
Controle
public List<Curso> criarLista(Object[] objects){
List<Curso> cursos = new ArrayList<Curso>();
for(Object obj : objects){
String nome = obj.toString().toLowerCase();
List<Curso> c = daof.getCursoDAO().buscaCurso(nome);
for(Curso curso : c){
cursos.add(curso);
}
}
return cursos;
}
pra enfim adicionar os cursos selecionados ao aluno, e só funcionou quando usei Criteria, pq dá pra especificar a classe e ele retornava um Curso, quando usei sql ou hql ele retornava Object...
Acredito que fazendo uma busca com Criteria anteriormente eu conseguisse retornar uma lista de Alunos sem dar erro de cast...
Quanto ao problema pra exibir pelo nome, vou pesquisar pq sobrescrever toString não resolveu....
Vlw...