Eu tenho um preparedstatement que tem um inner join
Como eu seto eles dentro da minha condicao while?
PreparedStatementst=cn.prepareStatement("SELECT ct.customer_name FROM changes c "+"INNER JOIN customer ct ON c.id_customer = ct.id_customer WHERE ct.customer_name='Barcelona'");rs=st.executeQuery();lista=newArrayList();while(rs.next()){Changeschg=newChanges();chg.set???lista.add(chg);}
Primeiro ponto é que vc não precisa fazer esse join na sua jpql e nem declarar o fetch type no seu relacionamento, pois todo relecionamento …ToOne é EAGER por padrão. Se é EAGER por padrão, ele vai trazer o Customer automaticamente.
Altere sua JPQL para
select c.customer.name from Change c where c.customer.name = 'Barcelona'
Certifique-se de usar o nome da classe correta vinculada ao alias c (changes, Change, Changes?)
pra pegar o valor no resultset, use
rs.getString(1);
logo:
chg.setName(rs.getString(1));
edumatias
A fins de aprendizado para @rafa120 além das dicas do @raphaeloneves você também pode fazer desta forma
Obrigado pelas dicas! Vou dar uma olhada e arrumar essa questao do EAGER
Mas quanto ao resultset que está estranho ainda
Mas estou fazendo um select de customer_name da tabela changes, porem nao tenho este campo la… nunca vai dar certo, acredito eu
oq tenho eh id_customer
entao nao consigo fazer um setName ou setCustomerName…somente setCustomer que pede um retorno de objeto
Estou fazendo isso para gerar graficos com o primefaces. Já consegui fazer funcionar com outro SQL e resultset, mas somente com dados de uma tabela, sem ter o “inner join”
A classe completa:
publicclassChangesDaoImplCharts{publicList<Changes>listar(){List<Changes>lista=null;ResultSetrs;Connectioncn=null;try{Class.forName("com.mysql.jdbc.Driver");cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/meu_banco?user=root&password=root");PreparedStatementst=cn.prepareStatement("SELECT c customer_name FROM changes c WHERE c.customer_name='Barcelona'");rs=st.executeQuery();lista=newArrayList();while(rs.next()){Changeschg=newChanges();//chg.setCustomer(rs.getObject("customer_name"));lista.add(chg);}rs.close();}catch(Exceptione){System.out.println("Error: "+e);}finally{if(cn!=null){try{cn.close();}catch(SQLExceptionex){Logger.getLogger(CustomerDaoImplCharts.class.getName()).log(Level.SEVERE,null,ex);}}}returnlista;}}