5
QueryDSLを使用してクエリーを作成する際に問題があります。私はそのIDで特定のユーザーのすべてのグループを取得したい。これはどのように機能しますか?QueryDSLを使用したクエリーの作成多対多マッピングのあるJPA
public List<Group> findGroupsByUser(Integer userId) {
JPQLQuery query = new JPAQuery(getEntityManager());
??????
return result;
}
マップされたクラス:
@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;
...
}
データベーステーブル:
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
)
ソリューションを動作するはずうまく働きました。グループ内のユーザーが正しくマップされていません。 @JoinTable(mappedBy = groups) プライベートセットユーザー; –
problemzebra