2017-01-17 2 views
0

J'ai besoin d'obtenir toutes les lignes où la date actuelle contient entre dateStart et dateAnd.Les critères Hibernate obtiennent toutes les lignes où currentDate> startDate et <endDate

si la date actuelle - 17 janvier 2017 et

id dateStart  dateEnd 
0 01 JAN 2017 18 JAN 2017 
1 01 JAN 2017 16 JAN 2017 
2 18 JAN 2017 03 FEB 2017 
4 17 JAN 2017 16 JAN 2017 

Je dois obtenir 2 rangs 0 et 4 ID dans le tableau

@Override 
    public List<Raffle> findCurrentRaffle() { 
     Criteria criteria = getSession().createCriteria(Raffle.class); 
     criteria.add(Restrictions.ge("dateStart", new Date())); 
     criteria.add(Restrictions.le("dateEnd", new Date())); 
     return criteria.list(); 
    } 

retour 0 lignes

private Long id; 
    @Column(name = "dateStart") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date dateStart; 
    @Column(name = "dateEnd") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date dateEnd; 
+0

new Date() ne devrait pas être appelé deux fois, ils auront des valeurs différentes. Juste une remarque générale, cela ne répondra pas à la question. – hakamairi

+0

Pouvez-vous afficher la classe Raffle et indiquer quels sont les types de colonne dateStart et dateEnd? – hakamairi

+0

Que recherchez-vous exactement? –

Répondre

2

En vous conditions que vous avez dateStart >= currentDate and dateEnd <= currentDate

Pour résoudre un problème, il suffit de changer la condition de dateStart <= currentDate and dateEnd >= currentDate

criteria.add(Restrictions.le("dateStart", new Date())); 
criteria.add(Restrictions.ge("dateEnd", new Date()));