Как преформовать JOIN с JPA JAVA - PullRequest
0 голосов
/ 27 мая 2019


Я хочу быть кратким и ясным для моей проблемы .. Я пытаюсь получить данные из базы данных, выполняя соединение, чтобы получить желаемый результат ..
Итак, у меня есть 3 стола,

EMPLOYEE:
emp_id -- PK
name..
surname..
dob.. etc

USER:

UserID PK
Username
Pass
emp_id fk
role_id fk

Роль

RoleID pk
Description

Я хочу выполнить запрос, чтобы получить список сотрудников, которые являются пользователями и имеют roleid = 2; Как я могу сделать это на JPA

Я пробовал это

Select e from Employee e JOIN User u Join Role r where r.roleId = 2

Но это не работает, все равно получает всех сотрудников без фильтрации тех, кто имеет ID = 2

Спасибо, все

1 Ответ

0 голосов
/ 28 мая 2019

Вы должны установить ассоциации между вашими сущностями, т.е. определить, как ваши две сущности связаны друг с другом.Таким образом, Spring сможет конвертировать jpql в sql и получать данные.

Вам нужно будет написать свою сущность User и Employee, например

public class User {
...
@OneToOne
@JoinColumn //using which column name it should join
private Employee employee;

@ManyToOne
@JoinColumn
private Role role;
...
public class Employee {
...
@OneToOne(mapedBy="employee")
private User user;
...

, тогда вы сможете написать свой запрос.как

@Query("select e from Employee e LEFT JOIN e.user u LEFT JOIN u.role r where r.id = :roleId")
List<Employee> getEmployeeListByRoleId(@Param("roleId") Long roleId); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...