Я пытаюсь получить поле "name" из моего пользовательского класса в моем классе Employee, чтобы я мог избежать выполнения дополнительного запроса для получения имени пользователя.
На данный момент я только смогчтобы получить user_id таким образом
Мой класс пользователя
@Entity @Table(name="user", schema = "public") @Getter @Setter @NoArgsConstructor @Accessors(chain = true)
public class User implements Serializable{
private @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "user_id") Long id;
private @Column(unique = true) String email;
private String name;
}
Мой класс сотрудника
@Entity @Table(name = "employee",schema = "public") @Getter @Setter @NoArgsConstructor @Accessors(chain = true)
public class Employee implements Serializable {
private @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name = "employee_id") Long id;
@JsonIgnore @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "fk_user_id",insertable = false,updatable = false) private User user;
private @Column(name="fk_user_id") Long userId;
}
я знаю, что не могу получить имя, не выбрав его, поэтому я попыталсяиспользуя пользовательский запрос в моем crudRepository
public interface EmployeeRepository extends CrudRepository<Employee, Long>{
@Query(value = "SELECT employee.*, public.user.name FROM public.employee INNER JOIN public.user ON public.user.user_id = employee.fk_user_id ", nativeQuery = true)
List<Employee> findEmployees();
}
Запрос возвращает то, что я ожидаю, но я не знаю, как извлечь результирующий столбец "name" в моем классе Employee
Любая помощь или руководстводобро пожаловать, спасибо за чтение