JPA JPQL: выбирать элементы, когда атрибут элемента (список / набор) содержит другой элемент - PullRequest
15 голосов
/ 01 декабря 2011
public class Document extends Model {
... 
@ManyToMany
public Set<User> accessors;
...
}

Я хочу выбрать все документы, в которых средства доступа содержат определенного пользователя. У меня только минимальный опыт работы с SQL и нет опыта с JPQL. Так как это сделать?

спасибо заранее

Ответы [ 2 ]

44 голосов
/ 28 сентября 2012
SELECT d FROM Document AS d WHERE :user MEMBER OF d.accessors

Должно быть то, что вам нужно, и это проще, чем объединение таблиц.Просто не забудьте использовать пользователя в качестве параметра вместо того, чтобы использовать его идентификатор:

query.setParameter("user", user);
21 голосов
/ 01 декабря 2011
select distinct d from Document d inner join d.accessors a where a.id = :id

Вы должны узнать, как работают объединения SQL, а затем научиться использовать объединения в JPQL.Это важноВы найдете множество учебников в Интернете.Google твой друг.

...