J'ai ce modèle de données
public class CustomerModel{
@Column
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
private DateTime membershipDate;
//Other properties and getters
}
Et le repo suivant
public interface CustomerRepo extends Repository<CustomerModel, Long>{}
Ce que je veux faire, c'est. Récupérez tous les utilisateurs à une date donnée, par exemple (membres qui se sont joints au 1er août 2013), mais le problème est que sur ma base de données, la date de l'adhésion a du temps avec elle. comment puis-je ignorer l'heure et récupérer tous les utilisateurs à une date donnée?
Malheureusement, avec JodaTime, la seule solution consiste à utiliser le mot clé Between
et à utiliser deux instances DateTime
pour composer la journée.
interface CustomerRepo extends Repository<CustomerModel, Long>{
List<CustomerModel> findByMemberShipDateBetween(DateTime start, DateTime end);
}
Si votre modèle de domaine utilisait Java Date
s en interne, vous auriez pu utiliser ce style:
interface CustomerRepo extends Repository<CustomerModel, Long>{
List<CustomerModel> findByMemberShipDate(@Temporal(TemporalType.DATE) Date date);
}
L'annotation @Temporal
N'est pas une JPA Spring Data personnalisée car la JPA ordinaire n'est actuellement pas autorisée sur les paramètres. La raison pour laquelle cela ne fonctionne qu'avec Java Date
s est malheureusement une limitation des JPAPI actuels. La méthode setParameter(…)
sur Query
ne prend que un TemporalType
pour les paramètres de type Date
. Nous pourrions essayer de convertir les objets JodaTime lors de la liaison des paramètres mais je suppose que les fournisseurs de persistance rejetteront cela en raison de la non-concordance de type (Date
VS. DateTime
).
Vous pouvez faire quelques contournements: créer DateTime jour Begin et Date Heure jour Et qui sont par exemple 2013-07-04 00:00:00 et 2013-07-04 23:59:59 et récupérer les objets nécessaires par requête:
List<CustomerModel> findByMembershipBetween(DateTime dayBegin, DateTime dayEnd);
jODA et Spring & JPA sont en fait de bons amis, il suffit de prendre connaissance de:
http://blog.netgloo.com/2015/04/06/spring-boot-using-joda-time-on-jpa-entity-with-hibernate/
prendre plaisir