Filtro de Relatorio dando erro ao pesquisar por data

1 resposta
D

ola gente estou tentando chamar um relatorio por data e na hora que escrevo a data e clico no botao para chamar o relatorio da esse erro abaixo alguem pode me ajudar?
obriigada!

import java.awt.*;   
import java.awt.event.*;   
import java.text.SimpleDateFormat;   
import java.util.Date;   
  
import javax.persistence.EntityManager;   
import javax.persistence.EntityManagerFactory;   
import javax.persistence.Persistence;   
import javax.swing.*;   
  
import Modelo.Cliente;   
import Modelo.Compra;   
import Modelo.Conta;   
  
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.view.JasperViewer;   
  
//import controle.Utilitarios;   
  
// Ctrl+Shift+F => Formata o código   
// Ctrl+A e Ctrl+i => Formata a seleção   
  
public class FiltroCliente extends JFrame {   
    private JLabel rotulo1;   
    private JTextField caixa1;   
    private JButton botao1;   
  
    private static EntityManagerFactory fabricaDeEntidades = null;   
  
    private static EntityManager gerenciador = null;   
    Cliente objetoCliente;   
    ImageIcon icone;   
    public FiltroCliente(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) {   
        super("Relatório Cliente");   
        Container tela = getContentPane();   
        icone = new ImageIcon("100.gif");   
        botao1 = new JButton (icone);   
        tela.setLayout(null);   
        fabricaDeEntidades=fabricaDeEntidades2;   
        gerenciador=gerenciador2;   
  
        rotulo1 = new JLabel("Data:");   
       
        caixa1 = new JTextField();   
           
        //botao1 = new JButton("Gerar Relatório");   
       
  
        // coluna, linha, largura, altura   
        rotulo1.setBounds(24, 19, 56, 20);   
        caixa1.setBounds(75, 19, 100, 20);   
  
        botao1.setBounds(54, 60, 100, 20);   
           
  
        //rotulo2.setBounds(24, 50, 100, 20);   
        //caixa2.setBounds(75, 50, 100, 20);   
  
           
  
        tela.add(rotulo1);   
        tela.add(caixa1);   
  
        //tela.add(rotulo2);   
        //tela.add(caixa2);   
  
        tela.add(botao1);   
       
  
        botao1.addActionListener(new ActionListener() {   
               
            public void actionPerformed(ActionEvent e) {   
                RelatorioCliente rep = new RelatorioCliente();   
                objetoCliente =   
                    (Cliente) gerenciador.createQuery(     
                    "from Cliente pr WHERE pr.Data = $P{Data}").setParameter("Data", caixa1.getText()).getSingleResult(); 
                JasperPrint relat;   
                try {   
                    relat = rep.gerarRelatorioCliente();   
                    JasperViewer.viewReport(relat, false);   
                } catch (Exception e1) {   
                    e1.printStackTrace();   
                }   
//                 
            }   
            });   
  
        // setSize(largura, altura);   
        setSize(250, 150);   
        setVisible(true);   
        setLocationRelativeTo(null);   
    }   
  
    public static void main(String[] args) {   
  
        fabricaDeEntidades = Persistence   
                .createEntityManagerFactory("TurmaN40PostgreSQL");   
  
        gerenciador = fabricaDeEntidades.createEntityManager();   
  
        FiltroCliente app = new FiltroCliente(fabricaDeEntidades, gerenciador);   
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  
    }   
}

erro

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: org.hibernate.QueryException: unexpected char: '{' [from Modelo.Cliente pr WHERE pr.Data = $P{Data}]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:617)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
at FiltroCliente$1.actionPerformed(FiltroCliente.java:75)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.hibernate.QueryException: unexpected char: '{' [from Modelo.Cliente pr WHERE pr.Data = $P{Data}]
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:204)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
... 37 more

1 Resposta

D

mudei algumas coisas no código e agora esta dando o erro abaixo

import java.awt.*;   
import java.awt.event.*;   
import java.text.ParseException;
import java.text.SimpleDateFormat;   
import java.util.Date;   
  
import javax.persistence.EntityManager;   
import javax.persistence.EntityManagerFactory;   
import javax.persistence.Persistence;   
import javax.swing.*;   
  
import Modelo.Cliente;   
import Modelo.Compra;   
import Modelo.Conta;   
  
import net.sf.jasperreports.engine.JasperPrint;   
import net.sf.jasperreports.view.JasperViewer;   
  
//import controle.Utilitarios;   
  
// Ctrl+Shift+F => Formata o código   
// Ctrl+A e Ctrl+i => Formata a seleção   
  
public class FiltroCliente extends JFrame {   
    private JLabel rotulo1;   
    private JTextField caixa1;   
    private JButton botao1;   
  
    private static EntityManagerFactory fabricaDeEntidades = null;   
  
    private static EntityManager gerenciador = null;   
    Cliente objetoCliente;   
    ImageIcon icone;   
    public FiltroCliente(EntityManagerFactory fabricaDeEntidades2, EntityManager gerenciador2) throws ParseException {   
        super("Relatório Cliente");   
        Container tela = getContentPane();   
        icone = new ImageIcon("100.gif");   
        botao1 = new JButton (icone);   
        tela.setLayout(null);   
        fabricaDeEntidades=fabricaDeEntidades2;   
        gerenciador=gerenciador2;   
  
        rotulo1 = new JLabel("Data:");   
       
        caixa1 = new JTextField();   
           
        //botao1 = new JButton("Gerar Relatório");   
       
  
        // coluna, linha, largura, altura   
        rotulo1.setBounds(24, 19, 56, 20);   
        caixa1.setBounds(75, 19, 100, 20);   
  
        botao1.setBounds(54, 60, 100, 20);   
           
  
        //rotulo2.setBounds(24, 50, 100, 20);   
        //caixa2.setBounds(75, 50, 100, 20);   
  
           
  
        tela.add(rotulo1);   
        tela.add(caixa1);   
  
        //tela.add(rotulo2);   
        //tela.add(caixa2);   
  
        tela.add(botao1);   
       
    SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");

//      Transforma uma String em um Date
     Date base = formatador.parse("29/01/2007");
     Date hoje= new Date();

//      Calcula a diferença em milisegundos entre as duas datas
     long dif = hoje.getTime() - base.getTime();

//      divide a diferença pelo numero de milisegundos de 1 dia, que seria 86400000
     long dias = dif/(1000L*60*60*24);
     long horas = dif/(1000L*60*60);
     long minutos = dif/(1000L*60);

     System.out.println("Data Atual: " + hoje);
     System.out.println("Data FORMATADA: " + formatador.format(base));
     System.out.println("Dif. em Dias: " + dias);
     System.out.println("Dif. em Horas: " + horas);
     System.out.println("Dif. em Minutos: " + minutos);

     
        botao1.addActionListener(new ActionListener() {   
               
            public void actionPerformed(ActionEvent e) {   
                RelatorioCliente rep = new RelatorioCliente();   
                objetoCliente =   
                    (Cliente) gerenciador.createQuery(     
                    "from Cliente pr WHERE data = $P[data]").setParameter("data", caixa1.getText()).getSingleResult(); 
                JasperPrint relat;   
                try {   
                    relat = rep.gerarRelatorioCliente();   
                    JasperViewer.viewReport(relat, false);   
                } catch (Exception e1) {   
                    e1.printStackTrace();   
                }   
//                 
            }   
            });   
  
        // setSize(largura, altura);   
        setSize(250, 150);   
        setVisible(true);   
        setLocationRelativeTo(null);   
    }   
  
    public static void main(String[] args) throws ParseException {   
  
        fabricaDeEntidades = Persistence   
                .createEntityManagerFactory("TurmaN40PostgreSQL");   
  
        gerenciador = fabricaDeEntidades.createEntityManager();   
  
        FiltroCliente app = new FiltroCliente(fabricaDeEntidades, gerenciador);   
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  
    }   
}

erro:

Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException
at org.hibernate.hql.ast.tree.IdentNode.resolveIndex(IdentNode.java:43)
at org.hibernate.hql.ast.tree.IndexNode.resolve(IndexNode.java:63)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:90)
at org.hibernate.hql.ast.HqlSqlWalker.processIndex(HqlSqlWalker.java:830)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4359)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1212)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4041)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3528)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1762)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
at FiltroCliente$1.actionPerformed(FiltroCliente.java:96)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Criado 7 de abril de 2012
Ultima resposta 7 de abr. de 2012
Respostas 1
Participantes 1