Bonjour,

J'ai un soucis. J'ai une fonction qui map les types java vers SQL et vice versa lorsque je veux faire une opération sur ma base de données.
Dans ma base j'ai des tables avec des types DATE. Lorsque je fais des enregistrements, j'obtiens bien des date en base avec des heures/minutes/secondes. L'inverse est faux, lorsque je récupère les données de la base et que j'obtiens l'objet java.sql.Date, ces données sont tronquées, dommage, après tout c'est marqué dans la javadoc...

Sauf que je veux ces informations, alors je décide de changer dans SQL Developer mes DATE en TIMESTAMP.
Le problème, c'est que lorsque je veux récupérer ces derniers, je n'arrive à rien avec le type qu'il me retourne, c'est à dire un oracle.sql.TIMESTAMP. Je pensais qu'il allait me retourner un java.sql.Timestamp...

Un extrait de 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
24
25
26
27
28
29
30
31
32
33
if (res != null)
{
	ResultSetMetaData meta = res.getMetaData();
	while (res.next())
	{
		HashMap<String, Object> map = new HashMap<String, Object>();
		String columnName = "";
		for (int i = 0; i < meta.getColumnCount(); i++)
		{
			columnName = meta.getColumnName(i + 1).toUpperCase();
			Object o = res.getObject(columnName);
			if (o instanceof java.sql.Date)
			{
				map.put(columnName, new Date(((java.sql.Date) o).getTime()));
			}
			else if (o instanceof oracle.sql.TIMESTAMP)
			{
				// ça n'entre jamais ici ! Pourtant o.getClass() == oracle.sql.TIMESTAMP
			}
			else if (o instanceof java.math.BigDecimal) // int
			{
				map.put(columnName, ((java.math.BigDecimal) o).intValue());
			}
			else // String, null
			{
				map.put(columnName, o);
			}
		}
 
		lstResults.add(map);
	}
	res.close();
}
Quelqu'un aurait-il une solution pour récupérer une java.lang.Date précise (sans les heures/minutes/secondes tronquées) ? Vu que la solution timestamp a l'air compromise...

Merci d'avance