2009-10-13 6 views
0

Cela devrait être assez simple, même si je n'arrive pas à trouver un seul exemple. Je veux créer une requête qui ressemble à ceci:Comment créer une requête dynamique en utilisant EOD SQL?

SELECT column_name FROM table_name WHERE column_name IN (value1,value2,...) 

En option, je pourrais ajouter des clauses ou à la fin de la requête.

Le code que j'ai écrit garde bien faire sauter avec un Nullpointer:

@Select(sql = "select storename from broadcastrecipient where storecity in (?{1})") 
public List<String> getStoresForCities(List<String> theCities) throws SQLException; 

Merci à l'avance. // Abean

REMARQUE: J'ai oublié d'ajouter quelques informations sur mon environnement: PostGres 8.3, Java 1.6 et EOD SQL 0.9.


Merci Jason. Pour ceux qui aiment savoir, la requête ressemble à ceci:

@Select(sql = "select distinct(storename) from broadcastrecipient where storecity = any (?{1})", disconnected=true) 
    public List<String> getStoresForCities(String[] theCities) throws SQLException; 

Et je également nécessaire de mettre en œuvre une classe TypeMapper à la carte-matrice SQL tableau Java.

+0

Quelle base de données utilisez-vous? –

+0

Désolé, PostGres 8.3. – ABeanSits

Répondre

1

Je suggère de regarder EoD SQL 2.0: https://eodsql.dev.java.net/ Ensuite, jetez un oeil à la méthode QueryTool.select() qui est conçu exactement pour cette situation.

EoD SQL 0.9 n'a pas de fonctionnalité pour faire face à ce genre de requête construit.

Un hack vraiment laid est de créer une table temporaire, et le remplir avec vos données de tableau. Puis exécutez la requête en tant que:

@Select("SELECT storename FROM broadcastrecipient WHERE storecity IN (SELECT * FROM tmp_cities)") 
public List<String> getStoresForCurrentCities(); 
Questions connexes