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

JPA Java Discussion :

comment je peux comparer 2 dates en JPQL


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut comment je peux comparer 2 dates en JPQL
    salut,
    comment je peux comparer 2 dates en JPQL,normalement ça marche si j'utilise de simple opérateurs tq =,<,>, puisque je manipule des objets ,
    mais je ne sais pas pourquoi ça ne marche pas , j'ai pensé à "to_char" , en fait je veux selectionner les dates par mois ect..
    je me suis bloquée , le machin 'CURRENT_DATE' n'a pas aussi fonctionné
    I m waiting for your ideas,
    merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par chflb Voir le message
    salut,
    comment je peux comparer 2 dates en JPQL,normalement ça marche si j'utilise de simple opérateurs tq =,<,>, puisque je manipule des objets ,
    mais je ne sais pas pourquoi ça ne marche pas , j'ai pensé à "to_char" , en fait je veux selectionner les dates par mois ect..
    je me suis bloquée , le machin 'CURRENT_DATE' n'a pas aussi fonctionné
    I m waiting for your ideas,
    merci
    getSingleResult sur
    "SELECT CURRENT_TIMESTAMP FROM ENTITY_OF_YOURS"
    "SELECT CURRENT_TIMESTAMP FROM ENTITY_OF_YOURS"
    "SELECT count(*) FROM TIMESTAMPED_ENTITY u WHERE u.updated > :date",

    me sort correctement

    2008-08-14 11:32:17.444136
    2008-08-14 11:32:17.444136
    0

    par contre la syntaxe
    "SELECT (:d2 > :d1) as test FROM ENTITY_OF_YOURS"
    qui est acceptable en SQL ne fonctionnera pas :
    11:35:25,505 ERROR PARSER:33 - <AST>:1:13: unexpected AST node: >

    et sans le FROM
    11:39:58,615 ERROR PARSER:33 - <AST>:0:0: unexpected end of subtree

    et aussi si vous utilisez Hibernate, appliquer le patch :
    http://opensource.atlassian.com/proj...browse/EJB-375

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    getSingleResult sur
    "SELECT CURRENT_TIMESTAMP FROM ENTITY_OF_YOURS"
    "SELECT CURRENT_TIMESTAMP FROM ENTITY_OF_YOURS"
    "SELECT count(*) FROM TIMESTAMPED_ENTITY u WHERE u.updated >
    bonjour,
    merci pour ta réponse, mais qu'est ce que tu as voulu dire par "ENTITY_OF_YOURS", mon entité? par exemple :
    "SELECT CURRENT_TIMESTAMP FROM Operation" ?
    et aussi si vous utilisez Hibernate, appliquer le patch :
    http://opensource.atlassian.com/proj...browse/EJB-375
    moi j'utilise toplink,
    en fait,j'ai de plein problèmes avec les dates en java, JPA lui est très pauvre en fonctions de dates,,
    voilà ma situation:
    -pour introduire des dates avec le hh:mi:ss, au niveau d'oracle, j'ai changé le type de l'atribut date_op vers timestamp,
    -au niveau de mon entité en java,le type de mon dateOp c'est java.util.date(normalement ça prend en considération le hh:mi:ss)mais lorsque j'insère dans ma base depuis java (operation.setDateOp(new Date()) ),le hh:mi:ss s'enregistre toujours 12:00:00

    - j'ai ensuite voulu changer le type de dateOp de java.util.Date à java.sql.Timestamp ,mais mon application ne s'est pas même lancée correctement (etat http 503)

    -de même, pour les requêtes JPQL,la selection d'un champ tq dateOp=max(dateOp) m'affiche plus qu'un resultat (càd elle ne prend pas en considèration la différence entre les dates par heure et minutes ..

    j'ai besoin de vos aides,j'ai passé 2 jours en ça sans rien faire..
    merci

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par chflb Voir le message
    bonjour,
    merci pour ta réponse, mais qu'est ce que tu as voulu dire par "ENTITY_OF_YOURS", mon entité? par exemple :
    "SELECT CURRENT_TIMESTAMP FROM Operation" ?

    moi j'utilise toplink,
    en fait,j'ai de plein problèmes avec les dates en java, JPA lui est très pauvre en fonctions de dates,,
    voilà ma situation:
    -pour introduire des dates avec le hh:mi:ss, au niveau d'oracle, j'ai changé le type de l'atribut date_op vers timestamp,
    -au niveau de mon entité en java,le type de mon dateOp c'est java.util.date(normalement ça prend en considération le hh:mi:ss)mais lorsque j'insère dans ma base depuis java (operation.setDateOp(new Date()) ),le hh:mi:ss s'enregistre toujours 12:00:00

    - j'ai ensuite voulu changer le type de dateOp de java.util.Date à java.sql.Timestamp ,mais mon application ne s'est pas même lancée correctement (etat http 503)

    -de même, pour les requêtes JPQL,la selection d'un champ tq dateOp=max(dateOp) m'affiche plus qu'un resultat (càd elle ne prend pas en considèration la différence entre les dates par heure et minutes ..

    j'ai besoin de vos aides,j'ai passé 2 jours en ça sans rien faire..
    merci
    … code de votre Entity… ?
    (partie déclaration des attributs…)

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 139
    Par défaut
    bonjour,
    voilà:
    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
    34
    35
    36
    37
    38
    39
    @Entity
    @Table(name = "OPERATION")
    @NamedQueries({@NamedQuery(name = "Operation.findByOp", query = "SELECT o FROM Operation o WHERE o.op = :op"), @NamedQuery(name = "Operation.findByNpch", query = "SELECT o FROM Operation o WHERE o.npch = :npch"), @NamedQuery(name = "Operation.findByMontant", query = "SELECT o FROM Operation o WHERE o.montant = :montant"), @NamedQuery(name = "Operation.findByNumMandat", query = "SELECT o FROM Operation o WHERE o.numMandat = :numMandat"), @NamedQuery(name = "Operation.findByMatriculeAgent", query = "SELECT o FROM Operation o WHERE o.matriculeAgent = :matriculeAgent"), @NamedQuery(name = "Operation.findByImpBudi", query = "SELECT o FROM Operation o WHERE o.impBudi = :impBudi"), @NamedQuery(name = "Operation.findByImpAnal", query = "SELECT o FROM Operation o WHERE o.impAnal = :impAnal"), @NamedQuery(name = "Operation.findByCodActiv", query = "SELECT o FROM Operation o WHERE o.codActiv = :codActiv"), @NamedQuery(name = "Operation.findByMontantht", query = "SELECT o FROM Operation o WHERE o.montantht = :montantht"), @NamedQuery(name = "Operation.findByDateVersm", query = "SELECT o FROM Operation o WHERE o.dateVersm = :dateVersm"), @NamedQuery(name = "Operation.findByDateOp", query = "SELECT o FROM Operation o WHERE o.dateOp = :dateOp"), @NamedQuery(name = "Operation.findByMoisPaie", query = "SELECT o FROM Operation o WHERE o.moisPaie = :moisPaie")})
    public class Operation implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @Column(name = "OP", nullable = false)
        private Long op;
        @Column(name = "NPCH")
        private Long npch;
        @Column(name = "MONTANT", nullable = false)
        private BigInteger montant;
        @Column(name = "NUM_MANDAT")
        private Long numMandat;
        @Column(name = "MATRICULE_AGENT")
        private Long matriculeAgent;
        @Column(name = "IMP_BUDI")
        private Long impBudi;
        @Column(name = "IMP_ANAL")
        private Long impAnal;
        @Column(name = "COD_ACTIV")
        private Long codActiv;
        @Column(name = "MONTANTHT")
        private BigInteger montantht;
        @Column(name = "DATE_VERSM", nullable = false)
        @Temporal(TemporalType.DATE)
        private Date dateVersm;
        @Column(name = "DATE_OP", nullable = false)
        @Temporal(TemporalType.TIMESTAMP)
        private Date dateOp;
        @Column(name = "MOIS_PAIE", nullable = false)
        @Temporal(TemporalType.DATE)
        private Date moisPaie;
        @JoinColumn(name = "COD_CAISSE", referencedColumnName = "CODE_CAISSE")
        @ManyToOne
        private Caisse codCaisse;
        @JoinColumn(name = "COD_TRANSAC", referencedColumnName = "CODE")
        @ManyToOne
        private Transaction codTransac;

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par chflb Voir le message
    rien d'anormal à première vue…

    quel type de colonne a-t-il généré côté ORACLE ?

Discussions similaires

  1. [Dates] Comment comparer 2 dates en PHP ?
    Par tigzirt dans le forum Langage
    Réponses: 8
    Dernier message: 10/08/2010, 16h03
  2. Comment vérifier et comparer une date?
    Par denis907 dans le forum ASP
    Réponses: 5
    Dernier message: 31/07/2007, 23h06
  3. Comment comparé une date dans une requête?
    Par ghan77 dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/04/2006, 10h22
  4. Comment comparer deux dates
    Par vodevil dans le forum Modules
    Réponses: 6
    Dernier message: 01/09/2005, 18h24
  5. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

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