Select, para Estoque?

16 respostas
juniorsatanas

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:

??????????????

16 Respostas

fujioka

SELECT (entrada-saida) AS “Valor” FROM remedio r;

juniorsatanas

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...
malves_info

juniorsatanas eu acho que o problema esta nas aspas entre Valor
Tenta assim: “SELECT (quante-quants) AS Valor FROM remedio r”;

juniorsatanas

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();

}
fujioka

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 =)

juniorsatanas

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)
renatocustodio

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.

juniorsatanas

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" />
		 &lt;BUTTON type="submit" id="pretty" title="ATENÇÃO:  ${usuario.login} - Click aqui para pesquisar por nome" &gt;Pesquisar<IMG  >&lt;/BUTTON&gt; 
	&lt;/td&gt;&lt;/tr&gt;
   &lt;/form&gt;

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.&lt;init&gt;(HQLQueryPlan.java:77)
	org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(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.
juniorsatanas

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 .

fujioka

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”;

juniorsatanas

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.&lt;init&gt;(HQLQueryPlan.java:77)
	org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(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…

renatocustodio

Não lembro muito bem, mas experimenta retirar o AS e veja o que acontece…

juniorsatanas

Eu acho que deve ter outra maneira de fazer isso…

não tem não ?

tipo pela displaytag !?
fujioka
@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 codigo
public 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;
tenta também antes de colocar esta acima esse
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 =)

juniorsatanas

fujioka , MUITO OBRIGADO PELA AJUDA AMIGO…

VOU FAZER AGORA ! ABRAÇO E BOM TRABALHO AI !

juniorsatanas

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";
 		}	
 	}
Criado 23 de março de 2008
Ultima resposta 25 de mar. de 2008
Respostas 16
Participantes 4