web-dev-qa-db-fra.com

Date des données de printemps entre la requête

J'ai une requête comme ci-dessous:

select * from Products p where ? between  p.effctDate and p.expDate

Puis-je traduire la requête ci-dessus en une méthode de requête Spring data jpa? Comme par exemple:

findByProductId(productId)

ou je n'ai qu'à utiliser @Query ou un Requête nommée pour gérer ce type de requête. J'ai essayé de chercher ici avant de poser la question ainsi que le site de données de printemps mais je n'ai trouvé aucune solution. toute aide est appréciée.

3
Ayan Pal

Vous pouvez utiliser la requête suivante:

Date date = //Input date
List<Product> = findByEffctDateAfterAndExpDateBefore(date, date);

Notez que vous devez entrer date deux fois pour faire correspondre les deux clauses «where». Ceci est basé sur l'hypothèse que vous utilisez des objets Date et non des Strings littéraux.

Voir Référentiels JPA Tableau 2.3 pour plus d'informations.

4
Roel Strolenberg

Vous pouvez essayer quelque chose comme cette astuce:

select 
    p 
from 
    Product p 
where 
    (?1 = 'field1' and p.field1 between p.effctDate and p.expDate)
    or (?1 = 'field2' and p.field2 between p.effctDate and p.expDate)
    or (?1 = 'field3' and p.field3 between p.effctDate and p.expDate) 
    or (?1 = 'field4' and p.field4 between p.effctDate and p.expDate) 
    ...

Mais ce n'est pas la meilleure approche IMO ...

Pour construire des requêtes dynamiques, vous pouvez utiliser celles-ci:

2
Cepr0

Vous pouvez essayer d'utiliser quelque chose comme ci-dessous:

Liste findAllByDateApprovedBetween (String dateApprovedFrom, String dateApprovedTo);

Cela se traduit par:

Hibernate: sélectionnez applicatio0_.id comme id1_1_, applicatio0_.date_approved comme date_app4_1_ à partir de l’application applicatio0_ où (applicatio0_.date_approved entre? Et?)

0
Vaibhav Gupta