Pessoal,
Estou com uma questão que está me tirando o sono! Tenho que retornar um valor (int) do banco de dados (MySQL). A consulta, que funciona perfeitamente no MySQL Query Browser, é a seguinte:SELECT COUNT(po.sequential_number)
FROM (((scf.board board INNER JOIN scf.po po ON (board.id_po = po.id))
INNER JOIN scf.log log ON (log.id_po = po.id) AND (log.id_board = board.id))
INNER JOIN scf.defect_log defect_log ON (defect_log.id_log = log.id))
WHERE ((po.sequential_number LIKE [b]idPo[/b]) AND (defect_log.id_defect NOT LIKE '602060'));
Li em algum lugar que a implementação de diversos 'INNER JOIN's na mesma hql é, no mínimo, complicada e a sugestão era usar uma native query.
Mas, usando tanto hql como native query dá erro. O método usando hql é:public int findDefectFreeBoardQuantityByPo(String idPo) {
StringBuilder hql = new StringBuilder();
hql.append("SELECT COUNT(po.sequentialNumber)"); // 32
hql.append(" FROM Board board INNER JOIN Po po ON board.idPo = po.id");
hql.append(" INNER JOIN Log log ON log.idPo = po.id AND log.idBoard = board.id");
hql.append(" INNER JOIN DefectLog defectLog ON defectLog.idLog = log.id AND defectLog.idDefect = '602060'");
hql.append(" WHERE (po.sequentialNumber) LIKE ? ");
Query query = getEntityManager().createQuery(hql.toString());
query.setParameter(1, idPo);
Object obj = new Object();
obj = query.getResultList().get(0);
return Integer.parseInt(obj.toString());
}
@Override
public int findDefectFreeBoardQuantityByPo(String idPo) {
String sql = "SELECT COUNT(po.sequential_number) "
+ "FROM (((scf.board board INNER JOIN scf.po po ON (board.id_po = po.id)) "
+ "INNER JOIN scf.log log ON (log.id_po = po.id) AND (log.id_board = board.id)) "
+ "INNER JOIN scf.defect_log defect_log ON (defect_log.id_log = log.id) AND (defect_log.id_defect = '602060')) "
+ "WHERE (po.sequential_number LIKE '" + idPo + "')";
Query query = getEntityManager().createNativeQuery(sql);
return Integer.parseInt((String) query.getResultList().get(0).toString());
}
Mas retorna um ClassCastException, dizendo que não pode converter de BigInteger para Integer.
Como que eu posso resolver isso?
Grato,
Gustavo