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

Spring Java Discussion :

Mapping + Named Parameter + Sql ENUM


Sujet :

Spring Java

  1. #1
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut Mapping + Named Parameter + Sql ENUM
    Bonjour

    j'ai une requête sql SELECT avec une clause WHERE composée d'un IN devant recevoir des String correspondant à un type crée par moi même dans Postgresql via:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE TYPE relation_type AS ENUM ('relation.type.spouse','relation.type.parent','relation.type.child','relation.type.other');
    La requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM person 
    INNER JOIN relation ON person.per_id = relation.per_id_other 
    WHERE rel_type IN (:relationtypes) ;
    rel_type est donc de type relation_type.

    Les objets de type Relation crée via cette requête sont normalement récupérés via un mapping (MappingSqlQueryWithParameters<Relation>) dans mon application.

    Je ne vois pas comment faire le passage de la liste en spécifiant qu'il s'agit d'une liste d'un type ENUM de la base SQL.

    Une idée ?

    (après ce n'est pas bloquant car il y a toujours la solution bien moche du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String sql = "SELECT * FROM person 
    INNER JOIN relation ON person.per_id = relation.per_id_other 
    WHERE rel_type IN ( ";
    for(String type : types) {
    sql +=  "'"+type+"'::relation_type, ";
    }
    sql = sql.replaceAll(", $",")");
    qui doit fonctionner )
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Si j'étais toi, je commencerai par trouver une solution purement JDBC avant de voir la mise en oeuvre avec Spring (JDBC Template, je suppose ?).

    Pour les types de données utilisateurs (que tu créées toi-même), il me semble qu'il faut passer par les Ref ou SQLData.

    Autrement, tu peux déclarer une classe de mapping via Connection#setTypeMap.

    Tu pourras par la suite utiliser PreparedStatement#setRef ou PreparedStatement#setObject avec les bons paramètres.

    Je ne saurai que trop te conseiller de consulter la documentation du driver JDBC de PostgreSQL qui te détaillera surement comment traiter les ENUM. Souvent les RDBMS supportent des conversions implicitent et juste passer le nom de l'ENUM sous forme de chaîne suffira.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Ok merci je regarde tous ça !
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

Discussions similaires

  1. Réponses: 9
    Dernier message: 10/12/2010, 13h55
  2. site map et table sql
    Par Msysteme dans le forum ASP.NET
    Réponses: 5
    Dernier message: 31/05/2010, 18h20
  3. [HTML] Directives HTML : <map name="">
    Par CyranOrion dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/04/2009, 16h09
  4. Réponses: 1
    Dernier message: 01/04/2009, 15h41
  5. du Mapping vers Script SQL
    Par Rambler dans le forum Hibernate
    Réponses: 4
    Dernier message: 17/11/2007, 09h54

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