Pessoal, é o seguinte:
Tenho duas tabelas (DAO): jogos e selecao
public class Jogo {
private Long cod_jogo;
private Long cod_selecao_a;
private Long cod_selecao_b;
private String dt_jogo;
private String horario;
private Integer gols_selecao_a;
private Integer gols_selecao_b;
private String estadio;
private String fase;
// setters e getters
public class Selecao {
private Long cod_selecao;
private String nome;
private String tecnico;
private String grupo;
private String logo;
// setters e getters
na minha JDBCDAO faço a seguinte pesquisa:
public List<Jogo> getLista() throws SQLException {
PreparedStatement stmt =
this.connection.prepareStatement("select *, sel_a.nome as selecao_a,"+
"sel_b.nome as selecao_b from jogo j "+
"inner join selecao sel_a on sel_a.cod_selecao = j.cod_selecao_a "+
"inner join selecao sel_b on sel_b.cod_selecao = j.cod_selecao_b");
ResultSet rs = stmt.executeQuery();
Assim, quando eu chamar uma action ela vai executar o jdbc que lista os valor pra mim e tudo mais. Até aqui tá funcionando (ela pesquisa e retorna tudo certinho), porém eu quero imprimir os seguintes valores:
<c:forEach var="jogo" items="${jogos}">
<tr>
<td>${jogo.selecao_a}</td>
<td>${jogo.selecao_b}</td>
<td>${jogo.estadio}</td>
<td>${jogo.fase}</td>
</tr>
</c:forEach>
O problema é que só está sendo impresso o “estadio” e a “fase”
E gera o seguinte erro:
javax.el.PropertyNotFoundException: Property 'selecao_a' not found on type ef.jdbc.modelo.Jogo
Alguém poderia me auxiliar urgente. Fico grato.
Ah, estou utilizando struts tb.
Meu lista que está dentro do jdbcDAO é:
public List<Jogo> getLista() throws SQLException {
PreparedStatement stmt =
this.connection.prepareStatement("select *, sel_a.nome as selecao_a,"+
"sel_b.nome as selecao_b from jogo j "+
"inner join selecao sel_a on sel_a.cod_selecao = j.cod_selecao_a "+
"inner join selecao sel_b on sel_b.cod_selecao = j.cod_selecao_b");
ResultSet rs = stmt.executeQuery();
List<Jogo> jogos = new ArrayList<Jogo>();
while (rs.next()) {
// criando o objeto Funcionario
Jogo jogo = new Jogo();
jogo.setCod_jogo(rs.getLong("cod_jogo"));
jogo.setCod_selecao_a(rs.getLong("cod_selecao_a"));
jogo.setCod_selecao_b(rs.getLong("cod_selecao_b"));
jogo.setDt_jogo(rs.getString("dt_jogo"));
jogo.setHorario(rs.getString("horario"));
jogo.setGols_selecao_a(rs.getInt("gols_selecao_a"));
jogo.setGols_selecao_b(rs.getInt("gols_selecao_b"));
jogo.setEstadio(rs.getString("estadio"));
jogo.setFase(rs.getString("fase"));
// adicionando o objeto à lista
jogos.add(jogo);
}
rs.close();
stmt.close();
return jogos;
}
Fico no aguardo!
Valew.
você não tem esse atributo “selecao_a” no teu bean, então não vai achar mesmo, vc tem que passar os atributos dos teus beans e não da query.
Dica: para nomear suas variáveis e métodos use CamelCase http://en.wikipedia.org/wiki/CamelCase
E qual seria a melhor alternativa então?
Criar o atributo no meu bean?
Assim:
public class Jogo {
[color=red] [b]private String selecao_a;[/b][/color]
private Long cod_jogo;
private Long cod_selecao_a;
private Long cod_selecao_b;
private String dt_jogo;
private String horario;
private Integer gols_selecao_a;
private Integer gols_selecao_b;
private String estadio;
private String fase;
porque esse selecao_a pertence a uma outro tabelo (como percebe no sql)
Qual a melhor solução?
Eu colocaria um atributo no meu bean do tipo de dado selecao.
private Selecao selecao;
mas essa alternativa que você deu também funciona, só não sei se é o melhor jeito de se fazer.
Markin1, concordo com você que não ficaria muito elegante, mas se eu coloco-o como “private Selecao selecao” como eu setaria no meu JDBCDAO. Assim não funcionou:
jogo.setSelecao(rs.getString("selecao_a"));
Alguma outra alternativa?
Ninguém para me auxiliar?
Pessoal, fiz como o Markin sugeriu. Mas e agora? Como chamar o arquivo no meu JDBC?
public class Jogo {
private Selecao selecao_a;
private Long cod_jogo;
private Long cod_selecao_a;
private Long cod_selecao_b;
private String dt_jogo;
private String horario;
private Integer gols_selecao_a;
private Integer gols_selecao_b;
private String estadio;
private String fase;