JPQL
SELECT u FROM User u WHERE u.name IN :param0
When this query executing we have different native query that depends on collection size. Examples: Collection has size 5:
select user0_.id as id1_0_, user0_.name as name2_0_ from users user0_ where user0_.name in ( ? , ? , ? , ?, ? )
; Collection has size 15:
select user0_.id as id1_0_, user0_.name as name2_0_ from users user0_ where user0_.name in ( ? , ? , ? , ?, ?, ? , ? , ? , ?, ?, ? , ? , ? , ?, ? )
In PostgreSQL we can use that query:
select user0_.id as id1_0_, user0_.name as name2_0_ from users user0_ where user0_.name = ANY(?)
In Java we use:
final Array varcharArray = connection.createArrayOf("varchar", new String[]{"Andrey"}); statement.setArray(1, varcharArray); statement.execute();
Do you like this idea?