Schreiben Sie eine Abfrage mit QueryDSL JPA mit vielen vielen mapping
Ich habe ein problem mit QueryDSL, um eine Abfrage zu erstellen. Ich will, um alle Gruppen einer bestimmten Benutzer-id. Wie hat das funktioniert?
public List<Group> findGroupsByUser(Integer userId) {
JPQLQuery query = new JPAQuery(getEntityManager());
??????
return result;
}
Klassen zugeordnet:
@Entity(name = "user")
public class User {
@Id
private int id;
private String login;
@ManyToMany
@JoinTable(name = "user2group", joinColumns = @JoinColumn(name = "uid"), inverseJoinColumns = @JoinColumn(name = "gid"))
private Set<Group> groups;
...
}
@Entity(name = "group")
public class Group {
@Id
private int id;
private String name;
@ManyToMany
@JoinTable(name = "user2group", joinColumns = @JoinColumn(name = "uid"), inverseJoinColumns = @JoinColumn(name = "gid"))
private Set<User> users;
...
}
Datenbank-Tabellen:
create table group(
id int(10) not null auto_increment primary key,
name varchar(255) not null,
creationdate datetime not null,
creator int(10) not null,
privacy enum('PUBLIC', 'PRIVATE') not null,
constraint foreign key (creator) references user(id)
)
create table user2group(
uid int(10) not null,
gid int(10) not null,
primary key (uid, gid),
constraint foreign key (uid) references user(id),
constraint foreign key (gid) references group(id)
)
create table user(
id int(10) not null auto_increment primary key,
lastname varchar(50) not null,
firstname varchar(50) not null,
createdate datetime not null,
login varchar(100) unique not null,
password varchar(40) not null
)
- Die Lösung von unten gut geklappt hat. Die Benutzer in einer Gruppe sind nicht richtig zugeordnet. @JoinTable(mappedBy=Gruppen) private Set<Benutzer> Benutzer;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas wie das folgende sollte funktionieren
list()
zuselect()
.