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 :

utilisatio d'une function dans une requête HQL


Sujet :

Hibernate Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut utilisatio d'une function dans une requête HQL
    Bonjour,
    j'utilise une application SPRING/JPA/HIBERNATE/POSTGRES
    Le but est d'utiiser dans une function custom dans une query HQL
    J'utilise dans ma data base la function suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE OR REPLACE FUNCTION movements.isnumeric(text) RETURNS BOOLEAN AS $$
    DECLARE x NUMERIC;
    BEGIN
        x = $1::NUMERIC;
        RETURN TRUE;
    EXCEPTION WHEN others THEN
        RETURN FALSE;
    END;
    $$
    STRICT
    LANGUAGE plpgsql IMMUTABLE;
    je définit mon diaLect custom pour définir ma function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import org.hibernate.dialect.PostgreSQL94Dialect;
    import org.hibernate.dialect.function.StandardSQLFunction;
     
    public class CustomPostgreSQL94Dialect extends PostgreSQL94Dialect {
     
        public CustomPostgreSQL94Dialect() {
            super();
            registerFunction("isnumeric", new StandardSQLFunction("isnumeric"));
        }
    }
    avec dans mon fichier appication.properties a Ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    spring.jpa.properties.hibernate.dialect=package.CustomPostgreSQL94Dialect
    Voici ma requête HQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Query("select hr, emp from HREntity hr left outer join EmployeeEntity emp on FUNCTION('isnumeric',hr.employeeId) and emp.account = FUNCTION('TO_NUMBER',hr.employeeId) order by hr.effectiveDate")
    Pourtant, j'ai l'erreur suivante au démarrage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected AST node: FUNCTION (isnumeric) near line 1, column 153 [select hr, emp from package1.HREntity hr left outer join package2.EmployeeEntity emp on FUNCTION('isnumeric',hr.employeeId) and emp.account = FUNCTION('TO_NUMBER',hr.employeeId) order by hr.effectiveDate]
    Pouvez-vous m'aider ?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    728
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 728
    Points : 250
    Points
    250
    Par défaut
    J'ai trouvé une astuce pour arriver au même résuLtat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    @Query("select hr, emp from HREntity hr left outer join EmployeeEntity emp on ((CAST( hr.employeeId AS INTEGER) IS NOT NULL) and emp.account = CAST(hr.employeeId as INTEGER)) order by hr.effectiveDate")
    mais l'éditeur m'indique une erreur juste après le on

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    '(', <expression>, FUNCTION or identifier expected, got '('

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2010, 15h09
  2. Remplir un champ non persité dans une requête HQL
    Par LittleBean dans le forum Hibernate
    Réponses: 0
    Dernier message: 03/03/2010, 11h57
  3. Récupérer une constante dans une requête hql
    Par sandrine49 dans le forum Hibernate
    Réponses: 2
    Dernier message: 24/09/2008, 21h16
  4. Erreur dans une requête HQL
    Par Philcmoi dans le forum Hibernate
    Réponses: 5
    Dernier message: 05/09/2008, 22h24
  5. Ajouter des jours à une date dans une requête HQL
    Par jojo el merou dans le forum Hibernate
    Réponses: 3
    Dernier message: 30/11/2007, 14h37

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