Bonjour à tous.
J'ai actuellement un soucis avec l'annotation @Temporal avec comme type TIMESTAMP.
Je vois lorsque j'effectue un query que l'heure n'est pas prise en compte et que similairement, les résultats ne contiennent pas l'heure.
Ainsi avec ce code:
J'obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 @Before public void setUp() { calendar.clear(); calendar.set(Calendar.YEAR, 2011); calendar.set(Calendar.MONTH, 8); // September! calendar.set(Calendar.DAY_OF_MONTH, 1); } @Test public void test() { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); this.calendar.set(Calendar.HOUR_OF_DAY, 10); Query query = sessionFactory.getCurrentSession().createQuery("from VolumeStatistics vs where vs.timestamp > :date"); query.setParameter("date", calendar.getTime()); List<VolumeStatistics> list = query.list(); for (VolumeStatistics vs : list) { System.out.println(vs.getFunctionName() + " " + sdf.format(vs.getTimestamp())); } System.out.println("Date : " + sdf.format(calendar.getTime())); System.out.println("Count : " + list.size()); }
Donc ici, on voit très clairement qu'il ne ramène pas les heures/minutes/secondes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 NOM_DE_LA_FONCTION 01/09/2011 00:00:00 NOM_DE_LA_FONCTION2 01/09/2011 00:00:00 Date: 01/09/2011 10:00:00 Count: 2
Et de même, si je modifie la date en paramètre pour mettre le 01/09/2011 à 23:59:59, il me retournera toujours mes 2 réponses alors qu'en DB, leur date est 01/09/2011 11:00 !
Pour info voici mon champ timestamp:
Et dans ma DB, le champ est de type "DATE" et si j'exécute cette requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @Column(name = "TIMESTAMP") @Temporal(TemporalType.TIMESTAMP) private Date timestamp;
J'obtiens ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part select TO_CHAR(timestamp, 'DD/MM/YYYY HH24:MI:ss') from TB_VOLUME_STATISTICS
PS: Nous utilisons Hibernate-core version 3.3.2.GA pour que WebSphere 6.1 puisse s'en sortir...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 TO_CHAR(TIMESTAMP,'DD/MM/YYYYHH24:MI:SS') ----------------------------------------- 01/09/2011 11:00:00 01/09/2011 11:00:00
Partager