sql.append(" t WHERE to_char(t.bgDetectionDateInterval, 'yyyy/mm/dd') >= '"+ inicio + "' and to_char(t.bgDetectionDateInterval, 'yyyy/mm/dd') <= '"+ fim +"'");
No projeto que vc ta fazendo, nao tem possibilidade de usar criteria do hibernate ?
pq era so colocar restriction.between(data1,data2);
e pronto.
bom qualquer coisa é so falar.
abraços
R
robsonsan
Cherubini não posso usar Hibernate
eu concatenei mais para testar mais não deu certo e a primeira vez que uso JPA então não sei se poderia usar dessa forma minha query
qual a outra forma que eu poderia usar ?
W
w1l14n
Pq vc não usa o between do SQL???
public Collection<BugTO> indicadorImprocedenciaOcorrencias(Date inicio,Date fim) {
StringBuilder sql = new StringBuilder("SELECT t ");
sql.append(recuperarNomeEntidade());
sql.append(" t WHERE to_char(t.bgDetectionDateInterval, 'yyyy/mm/dd') between '"+ inicio + "' and '"+ fim +"'");
Query query = getEntityManager().createQuery(sql.toString());
query.setParameter("bgDetectionDateInterval", inicio);
query.setParameter("bgDetectionDateInterval", fim);
return query.getResultList();
}
C
Cherubini
Bom, faz assim entao:
publicList<Classe>getValorEntreDatas(Datedata1,Datedata2){
EntityManagerem=PersistenceUtil.getEntityManager();Queryquery=em.createQuery("from Classe as o where data between :data1 and :data2");query.setParameter("data1 ",data1); query.setParameter("data2",data2); return(List<Classe>)query.getResultList();
}
R
robsonsan
Cherubini
eu peguei o que vc mandou e adpatei no que tenho mais não deu certo estou fazendo algo errado ?
publicCollection<BugTO>indicadorImprocedenciaOcorrencias(Datedata1,Datedata2){StringBuildersql=newStringBuilder("SELECT t ");sql.append(recuperarNomeEntidade());Queryquery=getEntityManager().createQuery("from where data between :data1 and :data2"); query.setParameter("data1 ",data1); query.setParameter("data2",data2); return(Collection<BugTO>)query.getResultList(); }
alterei essa linha
EntityManager em = PersistenceUtil.getEntityManager(); devido o PersistenceUtil esta gerando erro e deixei como esta acima
a exceção gerada foi essa
13:57:59,263ERROR[PARSER]line1:6:unexpectedtoken:where13:58:02,779ERROR[STDERR]javax.ejb.EJBTransactionRolledbackException:org.hibernate.hql.ast.QuerySyntaxException:unexpectedtoken:wherenearline1,column6[from where data between :data1 and :data2]
C
Cherubini
amigo,
aqui ta errado, olha:
Query query = getEntityManager().createQuery("from where data between :data1 and :data2");
primeiro from vc tem q colocar o nome da tabela e o campo chama data msm ?
abraços
C
Cherubini
vc tbm nao precisa + disso:
StringBuilder sql = new StringBuilder("SELECT t ");
sql.append(recuperarNomeEntidade());
R
robsonsan
e verdade eu percebi o erro do nome da coluna e concertei antes de vc responder novamente, mais agora fiz corretamente mais ainda não funcinou
public Collection<BugTO> indicadorImprocedenciaOcorrencias(Date data1,Date data2){
Query query = getEntityManager().createQuery(" from b where b.TS_CREATION_DATE between :data1 and :data2");
query.setParameter("data1 ", data1 );
query.setParameter("data2", data2);
return (Collection<BugTO>)query.getResultList();
}
gera a exceção
14:30:00,670ERROR[STDERR]javax.ejb.EJBTransactionRolledbackException:org.hibernate.hql.ast.QuerySyntaxException:bisnotmapped[ from b where b.TS_CREATION_DATE between :data1 and :data2]
Se eu coloco o nome real da tabela sem apelidar gera essa exceção
14:34:40,388ERROR[STDERR]javax.ejb.EJBTransactionRolledbackException:org.hibernate.QueryException:unexpectedchar:'@'[ from TEST_TELESP@BDQUALITY where TEST_TELESP@BDQUALITY.TS_CREATION_DATE between :data1 and :data2]
C
Cherubini
vamos lá:
primeiro
cola ai, sua classe mapeada pelo jpa, para ver como ela esta
segundo
quando vc colocou o nome da classe vc fez assim neh
Query query = getEntityManager().createQuery(" from BugTO where TS_CREATION_DATE between :data1 and :data2");
abraço
R
robsonsan
Cherubini acho que agora foi mais deu problema nos parametros que estou passando…
não são os parametros que vem da query “data1” e “data2” que preciso setar ?
esse data1 e data2 vem como parametro no seu metodo!
C
Cherubini
bom robson,
esses sao os 2 tipos que conhece para fazer query com parametros via jpa:
sem ser nativa
Query query = em.createQuery("SELECT p FROM Product p WHERE p.param2 < :threshold ORDER BY p.param1 ascending");
query.setParameter("threshold", my_threshold);
List results = query.getResultList();
e nativa
Query query = em.createNativeQuery("SELECT * FROM Product p WHERE p.param2 < ?1");
query.setParameter(1, my_threshold);
List results = query.getResultList();
Abraços
R
robsonsan
Cherubini em fim deu certo esta aqui o metodo final correto
valeu pela força Cherubini
publicCollection<BugTO>indicadorImprocedenciaOcorrencias(Dateinicio,Datefim){Queryquery=getEntityManager().createQuery(" from BugTO where bgDetectionDate between :inicio and :fim"); query.setParameter("inicio",inicio); query.setParameter("fim",fim); returnquery.getResultList(); }
C
Cherubini
Aee Robson!
Daora cara!
De nada,quem sabe uma hora é vc que vai me ajudar!
flws
A
alexandre99
hjkhk
L
leerabot
olá senhores, saudações
tenho um grandisimo problema
tenho q passar uma data por parametro e comprar se ela se encontra num intervalo de datas dentro do banco de dados
se ajudar envio o codigo errado pra ver quem pode dar uma força
desde já fico grato
[/code]
public boolean consultaReserva(String item, Date campoData){
boolean achou;
Session ses = getSession();
Query query = ses.createQuery("from ItemsAcervo itens where itens.itememp = :it and "+campoData+"between itens.dataEmprestimo and itens.dataDevolucao)");
query.setString("it", item);
ItemsAcervo itens = (ItemsAcervo) query.uniqueResult();
achou = (itens != null);
session.getTransaction().commit();
session.close();
return achou;
}[code]