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:
La requête :
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');
rel_type est donc de type relation_type.
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) ;
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:
qui doit fonctionner )
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(", $",")");
Partager