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:

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());
 
	}
J'obtiens:

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
Donc ici, on voit très clairement qu'il ne ramène pas les heures/minutes/secondes.

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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
@Column(name = "TIMESTAMP")
@Temporal(TemporalType.TIMESTAMP)
private Date 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
select TO_CHAR(timestamp, 'DD/MM/YYYY HH24:MI:ss') from TB_VOLUME_STATISTICS
J'obtiens ceci:
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
PS: Nous utilisons Hibernate-core version 3.3.2.GA pour que WebSphere 6.1 puisse s'en sortir...