假设有两个类,经理和工程师。从概念上讲,一名工程师只能属于一名经理,一名经理可以拥有多名工程师,但示意性地讲,他们可以通过部门 ID 进行链接。但是,类之间没有外键关联。
public class Manager {
.....
private Long deptId;
}
public class Engineer {
.....
private Long deptId;
}
以下查询在 mySQL 中有效:
从经理 m left 中选择 *,加入工程师 e on m.dept_id = e.dept_id。
它返回与经理共享同一部门的不同员工对应的多行。我无法将此查询的结果映射到实体。我想做如下的事情:
public class Manager {
.....
private Long deptId;
@OnetoMany
private List<Engineer> engineers;
}
@ManytoOne
和 @OnetoMany
注释期望使用外键进行映射,因此上述方法不起作用。还有其他方法可以实现这一目标吗?
最佳答案
您需要手动指定@JoinColumn
。查看this article了解详情
关于java - 如何将一对多结果映射到使用非主键连接的 Hibernate 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61465280/