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:
1 2
|
CREATE TYPE relation_type AS ENUM ('relation.type.spouse','relation.type.parent','relation.type.child','relation.type.other'); |
La requête :
Code:
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:
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 )