1
私はjpaで初心者です。複合クエリが発生しました。 その後、私は検索ソリューションを開始しました。多くの人が使用基準APIをアドバイスしました。条件サブクエリを作成するためのヘルプが必要
質問:どのようにcriteriaQueryを使用して同様のクエリを作成するのですか?
MySQLバージョン
SELECT role FROM Role WHERE id_role=(SELECT id_role FROM Client WHERE email=:email)
役割
@Entity
@Table(name="role")
public class Role {
@Id
public int id_role;
private enum enumRole {ADMIN, CLIENT}
@Column(name="role")
private enumRole role;
public Role() {
}
public Role(enumRole role) {
this.role = role;
}
public String getRole() {
return this.role.name();
}
public void setRole(String role) {
this.role = enumRole.valueOf(role);
}
@OneToMany(targetEntity = Client.class)
private List clientList;
}
クライアント
@Entity
@Table(name ="client")
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long Id;
@Column(name="first_name", length = 25)
private String firstName;
@Column(name="surname", length = 25)
private String surName;
@Column(name="password", length = 30)
private String password;
@Column(name="email")
private String email;
@Column(name="username", length = 15)
private String username;
public Client() {
}
@ManyToMany(targetEntity = Ticket.class)
private Set ticketSet;
public Client(String firstName, String surName, String password, String email, String username) {
this.firstName = firstName;
this.surName = surName;
this.password = password;
this.email = email;
this.username = username;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurName() {
return surName;
}
public void setSurName(String surName) {
this.surName = surName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
}
ここでマッピングが必要だと思います。ロールエンティティの@OneToMany。 – kopylov
そのマッピングを使用すると、あなたのroleRepository内に次のようなことができます: @Query( "rをロールから選択r.client.cをc.email =:email") ロールfindOneByClientsEmail(@Param "電子メール")文字列電子メール); – GavinF
今は基準APIを使用して – kopylov