0
JPQL
に書き換えるSQL
クエリを作成しました。下にSQL
というクエリと私の例であるJPQL
があります。私はクエリではwash_admin
という名前の関数テーブルを使用しており、Java
クラスにマップされていないことを通知する必要があります。 SQL
クエリ:SQLクエリをJPQLに正しく書き換える方法
select ww.wash_id, ww.name, ww.washlocation_wash from test3.user us
join test3.admin ad on us.user_id = ad.user_id
join test3.wash_admin wa on wa.admin_id = ad.admin_id
join test3.wash ww on ww.wash_id = wa.wash_id
where 1=1
and us.login = 'ADMIN11';
マイJPQL
:
@Query(value = "select w from Wash w left join w.washAdmins wa left join wa.userId us where us.login = :login")
List<Wash> getWashByLogin(@Param("login") String login);
Wash
:
public class Wash {
private Integer washId;
private String name;
private WashLocation washLocation;
private List<Worker> washWorker;
private List<Reservation> washReservation;
private List<WashWashType> washTypes;
private List<Admin> washAdmins;
User
:
public class User {
private Integer userId;
private String login;
private String passwordHash;
private Role userRole; // admin, worker, client
private Client userClient;
private Worker userWorker;
private List<File> file;
private Admin userAdmin;
Admin
:
public class Admin {
private Integer adminId;
private User userId;
private List<Wash> washId;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "wash_admin", joinColumns = {
@JoinColumn(name = "adminId") },
inverseJoinColumns = { @JoinColumn(name = "washId") })
public List<Wash> getWashId() {
return washId;
}
は、残念ながら、私は走ったときに、このquery
Iまし例外:
Name for parameter binding must not be null or empty! For named parameters you need to use @Param for query method parameters on Java versions < 8.; nested exception is java.lang.IllegalArgumentException:
しかし、そのトピックの主なquestoionはそれを書き換える方法に適切にそれがあるのと同じになり得ることですSQL
クエリですか?