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 :

[Hibernate]test de date


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Par défaut [Hibernate]test de date
    Bonjour,
    j'utilise l'objet Criteria d'Hibernate, quand je veux tester une date (util.java.date), il test sur tous l'emsemble YY/MM/DD HH:mm:ss nn. Cependant mon test fonctionnellement ne peut se faire que sur YY/MM/DD.

    Criteria criteria = connection.createCriteria(******.class)
    .add(Restrictions.eq("id.dtDebut",dtDebut))

    Avez vous une astuce pour eviter de tester sur l'heure, les minutes ... jusqu'au nanoseconde ??

    Merci de votre aide.

    Julien

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Je te conseillerai d'utiliser les expressions regulieres (regex) dans ton cas, un petit exemple.

    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
     
    import java.util.regex.*;
     
    public class test {
        public static void main(String[] args) throws Exception {
            // Create a pattern to match breaks
            Pattern p = Pattern.compile("[0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{2}");
            String date = "06/06/14 16:44:04 04";
            // Split input with the pattern
            String[] result = 
                     p.split(date);
            for (int i=0; i<result.length; i++)
                System.out.println(result[i]);
        }
    }
    dans ce cas, tu recuperes 06/06/14 sur ta console. ensuite rien ne t'empeche de sauvegarder le resultat dans une variable et de la traiter apres.

    Pour plus d'info sur les expressions regulieres, tu peux passer voir ce tuto la.
    http://cyberzoide.developpez.com/java/regex/regex.pdf

    J'espere d'avoir apporté des infos qui te seront utiles.

    cordialement,

    Zorm

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Criteria criteria = connection.createCriteria(******.class)
    .add(Restrictions.eq("id.dtDebut",new java.sql.Date(dtDebut.getTime())))
    java.sql.Date = Uniquement la date
    java.sql.Time = Uniquement l'heure
    java.sql.Timestamp = Date ET heure

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 8
    Par défaut
    Ok merci à tous je vais tester tous ca !!!

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 238
    Par défaut
    Salut à tous.
    J'ai un problème avec la conversion des dates et je ne vois pas ce qui cloche.
    J'ai une chaine qui correspond à une date de la forme yyyy-MM-dd (21-06-2006)
    Et dans ma base, le format est le suivant : yyyy-MM-dd hh:mm:ss

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date maDate = stringToDate(transformDate(date_deb_search),
    							"yyyy-MM-dd");
    transformDate renvoie la date sous le bon format (yyyy-MM-dd).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static Date stringToDate(String sDate, String sFormat) {
    		try {
    			SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
    			return sdf.parse(sDate);
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    Et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    crit.add(Restrictions.eq("date_aff", new java.sql.Date(
    							maDate.getTime())));
    L'exception est levée par ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List demandes = crit.list();
    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
    java.lang.ClassCastException: java.sql.Date
    	org.hibernate.type.StringType.toString(StringType.java:44)
    	org.hibernate.type.NullableType.nullSafeSet(NullableType.java:87)
    	org.hibernate.type.NullableType.nullSafeSet(NullableType.java:65)
    	org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514)
    	org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576)
    	org.hibernate.loader.Loader.doQuery(Loader.java:661)
    	org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    	org.hibernate.loader.Loader.doList(Loader.java:2145)
    	org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
    	org.hibernate.loader.Loader.list(Loader.java:2024)
    	org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
    	org.hibernate.impl.SessionImpl.list(SessionImpl.java:1533)
    	org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
    ...
    Pouvez-vous me guider vers la résolution de mon problème ?

  6. #6
    zev
    zev est déconnecté
    Membre expérimenté
    Inscrit en
    Octobre 2004
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 204
    Par défaut
    Je te conseillerai de réécrire ça en hdl query.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Date date = ... // ta date
    // Moi je met des calendar partout parce que ça marche bien
    Calendar cal = new GregorianCalendar();
    cal.setTimeInMillis(date.getTime());
     
    // La requete
    String requete = "from ... where .. and date = :ladate";
    // Execution et passage des parametres
    Query query = session.createQuery(requete).setCalendar("ladate",cal);

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut [ Hibernate ] - Format de date dans une requête
    J'ai un problème ! je souhaiterai pouvoir définir le format de la date SQL de ma date qu'Hibernate va prendre pour comparer dans ma requête !
    En effet, il compare heure, minute, seconde, et donc C'est pas top !
    Une solution ? avec des criteria, ou du HQL ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Calendar dateToday = Calendar.getInstance();
    			dateToday.set(2006,6,22);
    			List resL = (List) s.createCriteria(Livres.class)
    			.add(Restrictions.not(Restrictions.eq("date",dateToday))).list();
    P.S. : Connaissez-vous les avantages des criteria ?

    Merci.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Par défaut
    Bon, pour la dernière fois alors (vous n'écoutez pas trop je trouve en ce moment )

    Voici un exemple basique de gestion de DATE !!

    Pour commencer, 2 objet java.util.Date initialisés à la même date MAIS, l'une à 12h20, l'autre à 00h00.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date dateReference = new GregorianCalendar(2004, Calendar.FEBRUARY, 16,12,20).getTime();
    Date dateRecherche = new GregorianCalendar(2004, Calendar.FEBRUARY, 16).getTime();
    J'ajoute un objet en base avec la date de référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Livre livre1 = new Livre("2-7440-1713-2");
    livre1.setTitre("UML 2.0");
    livre1.setDateParution(dateReference);
     
    ...
     
    session.save(livre1);
    Ensuite, je recherche les livres avec le 16/02/2004 comme DATE de parution sans me préocuper de l'heure !
    Le seule objet en java qui soit capable de ne contenir QUE la date est l'objet java.sql.Date !
    Je vais donc transformer ma date de recherche(util) en Date sql !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.sql.Date critereDate = new java.sql.Date(dateRecherche.getTime());
    List liste = session.createCriteria(Livre.class).add(Restrictions.eq("dateParution",critereDate)).list();
    Là, je récupère bien mon livre malgrès son heure !!!

    [2-7440-1713-2: UML 2.0 (Mon Feb 16 12:20:00 CET 2004).]
    Quand à la question Criteria ou HQL, j'y ai répondu il y as 2 posts de cela

Discussions similaires

  1. [VBA]test de date
    Par nejisama8 dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/05/2007, 20h45
  2. [hibernate][test unitaire]j'arrive pas à inserer ce que je veux
    Par mehdi_swatch dans le forum Hibernate
    Réponses: 1
    Dernier message: 02/06/2006, 16h31
  3. [Dates] [php]Test de dates
    Par samjung dans le forum Langage
    Réponses: 4
    Dernier message: 26/04/2006, 17h00
  4. [hibernate] format de dates en HQL
    Par Bicky dans le forum Hibernate
    Réponses: 3
    Dernier message: 25/05/2005, 11h36

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