| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2009 09:25:10
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Olá pessoal
Estou com uma dúvida na utilização de criteria no hibernate. Eu estava usando HQL numa consulta, porém existem muitos filtros opcionais daí eu tinha que ficar criando condição no meio da query e ir dando append numa StringBuffer, aí não fica muito legível dessa forma, além de nada "elegante"
Eis a minha query HQL:
Então, mudando pra criteria seria bem simples, a não ser pelo fato de eu estar comparando as duas datas convertidas pra string no formato dd/MM/yyyy já que a hora é irrelevante pra essa minha consulta, daí não consigo fazer isso usando criteria, seria algo do tipo:
Mas não funciona tentando converter a data dentro dessa restrição aí =/
Alguma sugestão???
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/03/2009 14:29:30
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Alguém?
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 07:13:05
|
viniciuspadua
JavaEvangelist
![[Avatar]](/images/avatar/d0e5dfb52f4a6325738b1042cce523d7.png)
Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline
|
estava querendo a mesma coisa.
Utilizei o Restrictions.sqlRestriction onde posso passar um comando sql diretamente para a consulta, no meu caso utilizei o código abaixo.
onde "convert(varchar,dtConsulta,103)" é a forma como converto em sql no meu BD (sqlServer).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 09:24:31
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Show, o único problema é que amarra a consulta a um determinado banco.
Mas aqui isso é o de menos, funcionou legal!
Valeu cara!
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 09:36:52
|
viniciuspadua
JavaEvangelist
![[Avatar]](/images/avatar/d0e5dfb52f4a6325738b1042cce523d7.png)
Membro desde: 25/11/2006 17:21:30
Mensagens: 370
Offline
|
é tem isso!
se resolver se modo sem amarrar ao banco me manda!
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 10:25:29
|
ebarros
JavaGuru
Membro desde: 16/01/2008 10:08:54
Mensagens: 230
Offline
|
Bom como vcs jah disseram isso eh nativo de banco, acredito q usando hql da forma correta seria o mais viável(minha opnião);
Seu campo eh dateTime, ou TimesTamp, ou seja, armazena hora:minuto:segundo tbm? ou eh soh Date? vc pode fazer assim:
Da forma como foi feito acima vc pode inserindo nas suas condições o "?" e setar os parametros de acordo com as suas posições. Não precisa usar o SimpleDateFormat para formatar para dd/MM/yyyy visto que o padrão JDBC eh o formato americano yyyy-MM-dd.
|
Everton Barros
Fil 4:13 ?Tudo posso naquele que me fortalece?
Javafree |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 10:58:02
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Falae ebarros
Aqui os campos no banco são do tipo timestamp, só que nesse caso específico eu queria simplesmente "ignorar" o time dessas datas, usando o comando to_char do próprio HQL isso resolve o meu problema, o lance seria evitar as condições (se == null) para incluir ou não na query a comparação das datas por exemplo.
Daí achei que usando criteria ficaria mais "elegante" digamos assim, e não uma query quebrada cheia de condições.
De qualquer maneira valeu pela ajuda!
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/04/2009 21:52:46
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
felipempantoja wrote:
Então, mudando pra criteria seria bem simples, a não ser pelo fato de eu estar comparando as duas datas convertidas pra string no formato dd/MM/yyyy já que a hora é irrelevante pra essa minha consulta, daí não consigo fazer isso usando criteria, seria algo do tipo:
Mas não funciona tentando converter a data dentro dessa restrição aí =/
Alguma sugestão???
como eu axo criteria mais legal, mesmo vendo que vc fez com HQL, que ainda por cima usa coisa nativa da base de dados... segue uma solução com Criteria...
Ou seja, ele vai buscar o valores da date entre... 00h:00m:00s e 000ms e 23h:59m:59s e 999ms ... em resumo, vai encontrar qualquer valor igual a apenas o dia, não conciderando Times....
segue o trecho usado da classe DateUtils
sei que a principio pode parecer uma solução muito extensa, mais veja que não é...
DateUtils é uma classe utilitaria, e esse código pode ser reusado a qualquer momento no seu projeto....
então o código resumes a invocar... DateUtils.highDateTime(Date) e DateUtils.lowDateTime(Date)
espero que te ajude
This message was edited 4 times. Last update was at 08/04/2009 22:03:15
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2009 09:36:09
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Lavieri,
Show, e nem é extenso, ficou muito bom, eu estava tentando sempre converter a data pra eliminar as horas, mas com a classe utilitária isso resolve o meu problema sem precisar usar query nativa ou um HQL todo quebrado. Muito bom!
Obrigado a todos
Aproveitando...
Sabe se existe alguma coisa no criteria pra incluir uma condição no where somente se o parâmetro não for null?
Daí eu evito if/else no criteria tb
Abraços!
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2009 10:39:39
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
felipempantoja wrote:Aproveitando...
Sabe se existe alguma coisa no criteria pra incluir uma condição no where somente se o parâmetro não for null?
Daí eu evito if/else no criteria tb
Abraços!
Se o campo "e.name" for nulo ou se o cmapo "e.name" não for nulo
|
Sun Certified Java Programmer (SCJP 6)
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999
Meu blog -> http://blog.tomazlavieri.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/04/2009 11:30:16
|
felipempantoja
JavaTeenager
![[Avatar]](/images/avatar/ccb946faf2ff655ccffee7f306a81888.jpg)
Membro desde: 28/11/2007 16:00:37
Mensagens: 167
Localização: Rio de Janeiro
Offline
|
Lavieri,
Valeuuu cara, vou testar e posto aqui já!
|
"Quer você pense que pode ou que não pode, VOCÊ ESTÁ CERTO!"
Henry Ford |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2009 11:56:02
|
paribe
JWizard
![[Avatar]](/images/avatar/4fc848051e4459b8a6afeb210c3664ec.jpg)
Membro desde: 22/08/2004 07:34:33
Mensagens: 2057
Offline
|
Duvida quando uso
um campo data onde quero que esse campo seja >=
e no banco de dados esse campo foi gravado com horário
e ao consultar na tela é solicitado uma data informo "01/02/2009" --> dataIn
e existe outro campo data final onde digito informo "31/12/2009" -->dataFin
não volta o registro pois no banco o :
campo data_start ---> "01/02/2009 12:12:09"
campo data_start ---> "31/12/2009 13:10:09"
alguém poderia me ajudar .....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/04/2009 17:01:00
|
Lavieri
GUJ Master
![[Avatar]](/images/avatar/7b41bfa5085806dfa24b8c9de0ce567f.png)
Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline
|
baixa o arquivo que coloquei aki o DataUtils, e usa assim
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/04/2009 10:14:55
|
paribe
JWizard
![[Avatar]](/images/avatar/4fc848051e4459b8a6afeb210c3664ec.jpg)
Membro desde: 22/08/2004 07:34:33
Mensagens: 2057
Offline
|
Olá,
duvida usando sua rotina quando
monto criteria usando "=" não encontra o registro abaixo ?????
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/01/2010 02:29:31
|
Kleber-rr
Virtual Machine Man
![[Avatar]](/images/avatar/ba3ce9aeca1ef55d67282287b5a4b423.jpeg)
Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline
|
Olá pessoal, estou com um problema tb na questão de converter de Date para String... tenho mto pouco conhecimento em criteria e estou fazendo ela assim:
Só que me dá o seguinte erro:
Se alguem puder ajudar, agradeço!!
Flws
|
 |
|
|
 |
|
|