Neměli byste volat executeQuery(String) na PreparedStatement , měli byste zavolat executeQuery() namísto. To je explicitně zakázáno rozhraním API JDBC, ale dojde k chybě pouze náhodou (kvůli syntaktické chybě) s MySQL Connector/J.
Všimněte si, že váš aktuální dotaz je ekvivalentem:
select * from matrix where metric_name = ?
Nevidím důvod, proč byste měli používat IN zde.