Olá pessoal estava querendo utilizar a seguinte sql para poder somar o valor de todos os lançamentos realizados e multiplicalos pelo fator, fator esse que seria divida ou ganho, mas acho que não é ai que está o erro:
Código:
public float saldo(Conta conta, Date data) {
StringBuffer sql = new StringBuffer();
sql.append("select sum(l.valor * c.fator)");
sql.append(" from Lancamento l,");
sql.append(" CATEGORIA c");
sql.append(" where l.categoria = c.codigo");
sql.append(" and l.conta = :conta");
sql.append(" and l.data <= :data");
SQLQuery query = this.session.createSQLQuery(sql.toString());
query.setParameter("conta", conta.getConta());
query.setParameter("data", data);
BigDecimal saldo = (BigDecimal) query.uniqueResult();
if(saldo != null){
return saldo.floatValue();
}
Erro:
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.Lancamento' doesn't exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1849)
at org.hibernate.loader.Loader.doQuery(Loader.java:718)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
at org.hibernate.loader.Loader.doList(Loader.java:2294)
... 89 more
Sei que o erro está ai por que esse método é o unico que utiliza sql, teria alguma forma de setar onde fica a entidade? Pelo o que estou vendo o problema é sua localização…
Vlw até mais.
