Обновите поле сущности пользователя в JPQL с предложением IN - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть классный пользователь, которому нужно обновить loginCount и lastLogin . Некоторые пользователи уже вошли в систему и обновили данные, поэтому я хочу обновить там loginCount до 1.

Я пытался использовать JPQL.

Я создал запрос, куда отправляю loginCount variable = 1 , lastLogin как currentDate и ids как комбинация всех идентификаторов как CommaSeparatedString.

@Query("update User u set u.loginCount = :loginCount, u.lastLogin = :lastLogin where u.id IN (:ids)")
void updateUserInitialLoginCount(@Param("loginCount") Long loginCount, @Param("lastLogin") Date lastLogin, @Param("ids") String ids);

Я хочу использовать предложение 'IN', но здесь у меня возникла проблема, заключающаяся в том, что при использовании предложения IN у меня должна быть строка с разделителями-запятыми, но мой идентификатор, который я нахожу, имеет тип Long.

ERROR:
Parameter value [1,2] did not match expected type [java.lang.Long(n/a)]

Есть ли способ решить эту проблему?

1 Ответ

0 голосов
/ 15 ноября 2018

Вам нужно передать список длинных как Param для идентификаторов вместо String.

@Query("update User u set u.loginCount = :loginCount, u.lastLogin = :lastLogin where u.id IN (:ids)")
void updateUserInitialLoginCount(@Param("loginCount") Long loginCount, @Param("lastLogin") Date lastLogin, @Param("ids") List<Long> ids);

И когда вы вызываете этот метод, создаете список массивов Long, добавляете в него идентификаторы и передаете в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...