2 Stimmen

Wie schreibt man Select-Abfragen für die paginierte Ausgabe von ManyToMany-Attributen?

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

  1. 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);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X