я следующие объекты:Hibernate - фильтр коллекции детской коллекцией детской
- Page Group - содержит страницы.
- Страница - ниже группы страниц, имеет роли доступа.
- Роль.
Мне нужно запросить все группы страниц, которые разрешены одной (или нескольким) выбранным ролям. Quedied Page Group может содержать не все страницы. Все страницы, заданные для группы страниц, должны иметь выбранные роли.
Как я могу это понять? Думаю, я должен использовать @Filter, но не знаю, как это сделать.
схема базы данных является ниже:
Группа страниц листинга:
@Entity
@Table(name = "PAGE_GROUP")
public class PageGroup {
@Id
@Column(name = "pg_id")
private long id;
@Column(name = "SOME_FIELD")
private String field;
@OneToMany(mappedBy = "group")
private Set<Page> pages;
}
Страница листинга:
@Entity
@Table(name = "page")
public class Page {
@Id
@Column(name = "p_id")
private long id;
@Column(name = "some_field")
private String field;
@JoinColumn(name = "pg_id")
@ManyToOne
private PageGroup group;
@ManyToMany
@JoinTable
private Set<Role> roles;
}
Роль листинга
@Entity
@Table(name = "role")
public class Role {
@Id
@Column(name = "r_id")
private long id;
@Column(name = "some_field")
private Date field;
//important: no Page reference
}
Можете ли вы показать код, который вы использовали для _try_ для реализации запроса? – DuncanKinnear