Tenho uma tabela remédios, nela tenho Entrada e Saida, campos INTEIROS,
gostaria de da um Select nessa tabela e subtrair todos os valores Entrada Menos Saida…
como eu faria isso ?
meus teststes:
??????????????
Tenho uma tabela remédios, nela tenho Entrada e Saida, campos INTEIROS,
gostaria de da um Select nessa tabela e subtrair todos os valores Entrada Menos Saida…
como eu faria isso ?
meus teststes:
??????????????
SELECT (entrada-saida) AS “Valor” FROM remedio r;
Obrigado amigo, eu fiz assim, mais não certo, poderia da uma ajuda ?
public TotalEstoque(Remdedio remedio) {
String hql = "SELECT (quante-quants) AS "Valor" FROM remedio r";
Query query = getSession().createQuery(hql);
query.setParameter("quante", remedio.getQuante());
query.setParameter("quants", remedio.getQuants());
return (Remedio) query.uniqueResult();
}
a tabela remédio ta assim:
package br.com.caelum.lojavirtual.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
import javax.persistence.Temporal;
@Entity
public class Remedio {
@Id
@GeneratedValue
private Long id;
private String nome;
private String descricao;
private String fornecedor;
private String lote;
@Temporal(javax.persistence.TemporalType.DATE)
private Date validade;
@Temporal(javax.persistence.TemporalType.DATE)
private Date entrada;
@Temporal(javax.persistence.TemporalType.DATE)
private Date saida;
private Long quante;
private Long quants;
get set...
juniorsatanas eu acho que o problema esta nas aspas entre Valor
Tenta assim: “SELECT (quante-quants) AS Valor FROM remedio r”;
malves_info pois é, já tentei de N formas… e necas…
package br.com.caelum.lojavirtual.dao;
import br.com.caelum.lojavirtual.modelo.Remedio;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Session;
import org.hibernate.Query;
public class RemedioDao extends Dao<Remedio> { //estende a Dao genérico
public RemedioDao(Session session) {
super(session, Remedio.class);
}
@SuppressWarnings("unchecked")
public List<Remedio> searchSimilarNome(String nome) {
return session.createCriteria(Remedio.class).add(
Restrictions.ilike("nome", "%" + nome + "%")).list();
}
public Valor(Remedio remedio) {
String hql = "SELECT (quante-quants) AS "Valor" FROM remedio r";
Query query = getSession().createQuery(hql);
query.setParameter("quante", remedio.getQuante());
query.setParameter("quants", remedio.getQuants());
return (Remedio) query.uniqueResult();
}
String hql = "SELECT (quante-quants) AS "Valor" FROM[i] remedio[/i] r"; Sera que o problema não esta aqui? Tenta colocar Remedio ao invés de Remedio deixa o nome igual o que esta na Entidade =)
classe
package br.com.caelum.lojavirtual.dao;
import br.com.caelum.lojavirtual.modelo.Remedio;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Session;
import org.hibernate.Query;
public class RemedioDao extends Dao<Remedio> { //estende a Dao genérico
public RemedioDao(Session session) {
super(session, Remedio.class);
}
@SuppressWarnings("unchecked")
public List<Remedio> searchSimilarNome(String nome) {
return session.createCriteria(Remedio.class).add(
Restrictions.ilike("nome", "%" + nome + "%")).list();
}
@SuppressWarnings("unchecked")
public List<Remedio> searchNome2(String nome) {
return session.createCriteria(Remedio.class).add(
Restrictions.ilike("nome", "%" + nome + "%")).list();
}
public Remedio Valor(Remedio remedio) {
String hql = "SELECT (quante-quants) AS "Valor" FROM[i] remedio[/i] r";
Query query = getSession().createQuery(hql);
query.setParameter("quante", remedio.getQuante());
query.setParameter("quants", remedio.getQuants());
return (Remedio) query.uniqueResult();
}
}
erro na hora de copilar:
Compiling 24 source files to /home/neneta/sigmp/build/web/WEB-INF/classes
/home/neneta/lojavirtual/src/main/java/br/com/caelum/lojavirtual/dao/RemedioDao.java:27: ';' expected
String hql = "SELECT (quante-quants) AS "Valor" FROM[i] remedio[/i] r";
^
/home/neneta/lojavirtual/src/main/java/br/com/caelum/lojavirtual/dao/RemedioDao.java:27: ';' expected
String hql = "SELECT (quante-quants) AS "Valor" FROM[i] remedio[/i] r";
^
2 errors
/home/neneta/sigmp/nbproject/build-impl.xml:331: The following error occurred while executing this line:
/home/neneta/sigmp/nbproject/build-impl.xml:164: Compile failed; see the compiler error output for details.
CONSTRUÇÃO FALHOU (tempo total: 1 segundo)
Do jeito que vc colocou é certeza que não é, pois as aspas no meio das string estão quebrando ela.
Coloca do jeito que o cara lá de cima falou e posta o erro que dá quando coloca do jeito dele.
select
public Remedio Valor(Remedio remedio) {
String hql = "SELECT (quante-quants) AS Valor FROM[i] remedio[/i] r";
Query query = getSession().createQuery(hql);
query.setParameter("quante", remedio.getQuante());
query.setParameter("quants", remedio.getQuants());
return (Remedio) query.uniqueResult();
}
logica
public void valor() {
remedios = (List<Remedio>) this.daoFactory.getRemedioDao().Valor(remedio);
}
jsp
<form action="remedio.valor.logic">
<tr><td>
<fmt:message key="valor"/>
</td>
<td>
Digite,Valor...:
<input autocomplete="off" id="remedioNome" name="remedio.nome" align="left" />
<BUTTON type="submit" id="pretty" title="ATENÇÃO: ${usuario.login} - Click aqui para pesquisar por nome" >Pesquisar<IMG ></BUTTON>
</td></tr>
</form>
erro maudito
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: unexpected token: [ near line 1, column 37 [SELECT (quante-quants) AS Valor FROM[i] remedio[/i] r]
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:95)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: [ near line 1, column 37 [SELECT (quante-quants) AS Valor FROM[i] remedio[/i] r]
org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
br.com.caelum.lojavirtual.dao.RemedioDao.Valor(RemedioDao.java:28)
br.com.caelum.lojavirtual.logic.RemedioLogic.valor(RemedioLogic.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117)
org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.caelum.lojavirtual.logic.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:28)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.caelum.lojavirtual.logic.DaoInterceptor.intercept(DaoInterceptor.java:24)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:88)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
eu tenho 2 campos, entrada e saida da mesma tabela, eu quero da um select no banco pega todas as entradas de produtoX e todas as Saidas do ProdutoX e SUBTRAIR, e postar o resultado em um form.
é isso .
String hql = “SELECT (quante-quants) AS “Valor” FROM Remedio r”;
Os [/i] foi quando coloquei pra ficar em italico e foi junto não era pra colocar na consulta… =;)
String hql = “SELECT (quante-quants) AS “Valor” FROM Remedio r”;
String hql = “SELECT (quante-quants) AS ‘Valor’ FROM Remedio r”;
se quiser da uma olhada do que se trata:
http://201.9.68.238:8084/sigmp
segue o erro na hora da listagem:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: expecting IDENT, found ''Valor'' near line 1, column 27 [SELECT (quante-quants) AS 'Valor' FROM br.com.caelum.lojavirtual.modelo.Remedio r]
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:95)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
root cause
org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found ''Valor'' near line 1, column 27 [SELECT (quante-quants) AS 'Valor' FROM br.com.caelum.lojavirtual.modelo.Remedio r]
org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
br.com.caelum.lojavirtual.dao.RemedioDao.Valor(RemedioDao.java:28)
br.com.caelum.lojavirtual.logic.RemedioLogic.valor(RemedioLogic.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117)
org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.caelum.lojavirtual.logic.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:28)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
br.com.caelum.lojavirtual.logic.DaoInterceptor.intercept(DaoInterceptor.java:24)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:88)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Obrigado pela ajuda…
Não lembro muito bem, mas experimenta retirar o AS e veja o que acontece…
Eu acho que deve ter outra maneira de fazer isso…
não tem não ?
tipo pela displaytag !?
@NamedQueries({
@NamedQuery(name="consulta.remedios",
query="select (quante-quants) from Remedio"
)
})
Coloca uma NamedQuerie abaixo da tag @Entity da sua entidade
e para consultar vc usa esse codigopublic Collection getValores(){
Collection<Remedio> remedios = null;
Session session = getSession();
Query qr = session.getNamedQuery("consulta.remedios");
remedios = qr.list(); // na sua consulta eu vi que vc traz um query.uniqueResult(); o certo não seria um query.list()
//ja que você vai pegar uma lista e não apenas um unico resultado?
return remedios;
String hql = "SELECT (r.quante-r.quants) FROM Remedio r";
Não precisa do "AS" =).. vc tinha colocado Remedio r mas nas colunas consultadas tava sem o atalho =)
fujioka , MUITO OBRIGADO PELA AJUDA AMIGO…
VOU FAZER AGORA ! ABRAÇO E BOM TRABALHO AI !
vou fazer assim, usando SQL, deu em nada…
// Atualizar movimentação de produto
@Validate(params={"estMovim"})
@Role({"Incluir", "Alterar"})
public String armazenar (EstMovim estMovim) {
try {
this.daoFactory.beginTransaction();
EstProduto produto = this.daoFactory.getEstProdutoDao().procura(estMovim.getEstProduto().getId());
// baixa ou acrescimo do produto movimentado
if (estMovim.isEntrada()){
produto.setQtde_Estoque(produto.getQtde_Estoque() + estMovim.getQuantidade());
}else{
produto.setQtde_Estoque(produto.getQtde_Estoque() - estMovim.getQuantidade());
}
// Salva produto com quantidade atualizada
this.daoFactory.getEstProdutoDao().atualiza(produto);
// Salva movimento
this.daoFactory.getEstMovimDao().atualiza(estMovim);
this.daoFactory.commit();
return "ok";
} catch (Exception e) {
this.daoFactory.rollback();
return "invalid";
}
}