Je sais que je peux transmettre une liste à une requête nommée dans JPA, mais qu'en est-il de NamedNativeQuery ? J'ai essayé de nombreuses façons, mais je ne peux toujours pas simplement transmettre la liste à un NamedNativeQuery. Quelqu'un sait-il comment passer une liste à la clause in dans NamedNativeQuery ? Merci beaucoup!
Le NamedNativeQuery est comme ci-dessous :
@NamedNativeQuery(
name="User.findByUserIdList",
query="select u.user_id, u.dob, u.name, u.sex, u.address from user u "+
"where u.user_id in (?userIdList)"
)
et ça s'appelle comme ça :
List<Object[]> userList = em.createNamedQuery("User.findByUserIdList").setParameter("userIdList", list).getResultList();
Cependant le résultat n'est pas comme je l'espérais.
System.out.println(userList.size()); //output 1
Object[] user = userList.get(0);
System.out.println(user.length); //expected 5 but result is 3
System.out.println(user[0]); //output MDAVERSION which is not a user_id
System.out.println(user[1]); //output 5
System.out.println(user[2]); //output 7