Предположим, что есть два класса: менеджер и инженер. Концептуально инженер может принадлежать только одному менеджеру, а менеджер может иметь несколько инженеров, но схематически они могут быть связаны идентификатором отдела. Однако между классами нет связи по внешнему ключу.

public class Manager {
   .....
   private Long deptId; 
 } 

public class Engineer {
   .....
   private Long deptId; 
 }

Следующий запрос работает в mySQL:

select * from manager m left join engineer e on m.dept_id = e.dept_id.

Он возвращает несколько строк, соответствующих разным сотрудникам, работающим в том же отделе, что и менеджер. Я не могу сопоставить результат этого запроса с сущностями. Я хотел бы сделать что-то вроде следующего:

public class Manager {
   .....
   private Long deptId; 

   @OnetoMany
   private List<Engineer> engineers;
 } 

Аннотации @ManytoOne и @OnetoMany предполагают использование внешнего ключа для сопоставления, поэтому вышеуказанное не работает. Есть ли другие способы добиться этого?

0
Coder95 27 Апр 2020 в 20:56

1 ответ

Вам необходимо указать @JoinColumn вручную. Ознакомьтесь с этой статьей подробности

0
Vladislav Kryshtanovskiy 27 Апр 2020 в 23:23