Bonjour
Merci d'avance pour tout d'aide apportée.
Ma question est tout simple , est ce que quelqu'un connait une méthode propre pour effectuer un IN ?
J'ai une liste de String et j'aimerais effectuer une requête avec un IN sur ma liste de String.
Je considère que parcourir la liste pour concaténer les éléments en les séparant par une virgule est moche .
J'ai cru que les NamedParameterJdbcTemplate serait ma solution mais mon utilisation de cette classe ne marche pas
j'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private List<String> getLoginAppliByDep(String departmentShortName) throws LdapException { LdapUserDao dao = new LdapUserDao(); List<String> logins = dao.getLoginNTByDep(departmentShortName); MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("appli_name", CommonConstants.APPLI_NAME_MEDIA); parameters.addValue("logins", logins); NamedParameterJdbcTemplate jt = new NamedParameterJdbcTemplate(Resources.IA_DS); // récup des réalisation des différents usr_typ pour l'équipe String my_query = "SELECT *** FROM *** i WHERE ***= :appli_name AND *** IN (:logins) "; List<String> loginsAppli = jt.query(my_query, parameters, new RowMapper() { public Object mapRow(ResultSet rs, int arg1) throws SQLException { return rs.getString("***"); } }); return loginsAppli; }
donc à priori la liste qui fait bien 2 éléments de long à bien été remplacée par 2 ? mais au moment de remplacer les ? par les arguments, ma méthode échoueException in thread "main" javax.ejb.EJBException: Exception in a business interface with REQUIRED TX attribute
at org.ow2.easybeans.transaction.interceptors.AbsTransactionInterceptor.handleContextContainerTransaction(AbsTransactionInterceptor.java:413)
Caused by: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT *** FROM *** i WHERE *** = ? AND *** IN (?, ?) ]; SQL state [JZ0SA]; error code [0]; JZ0SA: Instruction préparée : paramètre d'entrée non configuré, index : 2.; nested exception is java.sql.SQLException: JZ0SA: Instruction préparée : paramètre d'entrée non configuré, index : 2.
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:96)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:257)
Caused by: java.sql.SQLException: JZ0SA: Instruction préparée : paramètre d'entrée non configuré, index : 2.
at com.sybase.jdbc3.jdbc.ErrorMessage.raiseError(Unknown Source)
at com.sybase.jdbc3.tds.TdsParam.prepareForSend(Unknown Source)
at com.sybase.jdbc3.jdbc.ParamManager.checkParams(Unknown Source)
Je suis donc preneur de toute correction ou autre méthode arrivant au bon résultat
Merci
Partager