Non dovresti chiamare executeQuery(String) su un PreparedStatement , dovresti chiamare executeQuery() invece. Questo è esplicitamente vietato dall'API JDBC, ma va storto solo per caso (a causa dell'errore di sintassi) con MySQL Connector/J.
Tieni presente che la tua query attuale è l'equivalente di:
select * from matrix where metric_name = ?
Non vedo un motivo per cui dovresti usare IN qui.