У меня есть два объекта 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
или любым другим способом