У меня есть два объекта Java.
- Пользователь (у каждого пользователя есть индексный столбец)
- Адрес (каждый адрес также имеет столбец
user_index
)
У меня есть список всех индексных списков пользователей, usersIndexList
в качестве введенных данных, и я хочу получить все объекты адресов на основе этого usersIndexList
. Я нашел пример в другой теме. И пытался следовать ему, но это не работает.
JPA CriteriaBuilder - Как использовать оператор сравнения IN
Мой код:
List<String> usersIndexList= new ArrayList<String> ();
for (User u : usersList) {
usersIndexList.add(u.getIndex());
}
CriteriaBuilder criteriaBuilder = getEntityManager().getCriteriaBuilder();
CriteriaQuery<User> subQuery = criteriaBuilder.createQuery(User.class);
Root<User> fromUser= subQuery.from(User.class);
Expression<String> exp = fromUser.get("user_index");
Predicate predicate = exp.in(usersIndexList);
subQuery.where(predicate);
TypedQuery<User> query = getEntityManager().createQuery(subQuery);
return query.getResultList();
Но этот запрос не возвращает желаемого результата :(
Может кто-нибудь, пожалуйста, скажите мне, где я делаю неправильно, или дайте мне альтернативные решения, если это возможно, через nativequery
или namedquery
или любым другим способом.
But this query is not returning the desired result
? - person user8826113   schedule 08.05.2018