Ich habe eine Gruppentabelle mit einer ManyToMany-Beziehung mit der Tabelle User über eine Join-Tabelle. Eine Gruppe kann viele Benutzer enthalten oder Untergruppen mit mehreren Benutzern.
Ich verwende JPA, Hibernate 3.3
- Wie kann ich die von Group.getUsers() zurückgegebenen Ergebnisse paginieren, die entweder über Group.getUsers erhaltene Benutzer ODER alle Benutzer aus den Untergruppen in Group.getGroups sein könnten?
Hinweis: Da ich dies als ManyToMany-Beziehung ausgedrückt habe, habe ich keine Entitätstabelle (für die Join-Tabelle) und bin nicht sicher, wie ich Abfragen mit JPA auf der Join-Tabelle durchführen kann.
@Entity
@Table(name = "group")
public class Group {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false, insertable = false, updatable = false)
private Integer id;
@Column(name = "name", length = "255", nullable = false)
private String name;
@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}, fetch = FetchType.LAZY)
@JoinTable(name = "group_user", joinColumns = @JoinColumn(name = "group_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
private List<User> users = new ArrayList<User>(0);
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "group_subgroup", joinColumns = @JoinColumn(name = "src_group_id"), inverseJoinColumns = @JoinColumn(name = "target_group_id"))
private List<Group> groups = new ArrayList<Group>(0);