Em meu projeto java, estou usando como banco de dados o MySql, para alguns testes unitários estou usando o banco em memoria h2 database.
Na camada de persistência estou realizando uma consulta por período inicial e final, para construção da consulta estou utilizando Hibernate Criteria.
No banco minha coluna de data é do tipo dateTime, portanto ao realizar uma consulta passando os parâmetros de data truncado, por exemplo 2018-08-01 até 2018-08-24 (2018-08-24 simboliza a data atual de hoje), silenciosamente o Mysql envia a seguinte instrução 2018-08-01 00:00:00 até 2018-08-24 00:00:00. Com isso os registros com data igual 2018-08-24 não são retornados.
Por esse motivo tive que adiconar um sqlRestriction no Hibernate criteria para adicionar a função DATE() do MySql na coluna de data para o filtro ser passado corretamente, exemplo DATE(data_criacao) >= 2018-08-01 and DATE(data_criacao) <= 2018-08-24.
O problema é que meus testes unitário quebrou pelo motivo do banco h2 database não suportar a função DATE() que é particular do MySql.
Alguém já passou pelo mesmo problema, ou conhece uma função DATE() equivalente para o banco h2?
Obrigado!
Já pensou, que louco seria, se você já tivesse dado uma olhada nas funções do h2 database?
Obrigado pela resposta darlan_machado. Já vi a referência que você citou, mas das que são fornecidas não atende.
Cara, não force a barra.
Não entendo a razão pela qual você precisa usar uma função do banco de dados, se pode fazer tudo isso via JPA, desde que, o modelo esteja correto.
Já pensou em utilizar o método between do JPA? Tenta dar uma olhada nele.
Olá darlan_machado, não estou forçando a barra, se prestar a atenção na minha pergunta vai entender o motivo pelos quais não estou utilizando funções JPA como por exemplo betweenn para filtrar por um período de Data.
Estou usando sqlRestriction diretamente na API Criteria, essa restrição é necessária quando queremos usar cláusulas SQL que o Hibernate não suporta através da API Criteria, que no meu caso é a função DATE() do mysql.
Não vim ao fórum fazer pergunta sem fundamento, vim expor o meu problema e estou aberto a sugestões de melhorias ou alternativas.
Portanto entenda o problema mencionado antes de responder sem fundamentos e sem entender o problema.
Aqui tem uma referência do problema que estou tendo caso tenha interesse.
Agradeço a colaboração.