IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

@Temporal(TemporalType.TIMESTAMP) ne fonctionne pas!


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut @Temporal(TemporalType.TIMESTAMP) ne fonctionne pas!
    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...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Ok problème résolu...

    L'annotation @Temporal était aussi présente sur mon IdClass avec comme type DATE...

  3. #3
    Membre expérimenté Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Par défaut
    Euh juste pour vérifier, ton champs est bien en TemporalType.TIMESTAMP ?
    Parce que dans le code que tu as copié collé le champs est en TemporalType.DATE

    EDIT : Ah et mince trop tard et en plus tu as corrigé mon interrogation dans le même temps

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 214
    Par défaut
    Citation Envoyé par Shinzul Voir le message
    Euh juste pour vérifier, ton champs est bien en TemporalType.TIMESTAMP ?
    Parce que dans le code que tu as copié collé le champs est en TemporalType.DATE

    EDIT : Ah et mince trop tard
    Yep, c'était celui dans mon IdClass...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo