[英]Many to One Relation on same table
您认为一家公司,该公司在Users表上有员工,经理必须在Users表上。
例:
Users Table : John Watson userID=1 managerId=2(manager id have userID value)
Emilia Clarke userID=2 managerID=null(Because this user is a Manager)
您如何看待我呢? managerID行与Users表的多对一关系(尽管具有相同的表)
约翰·沃森(John Watson)的艾米莉亚·克拉克(Emilia Clark)经理(因为约翰的managerID,艾米莉亚的用户ID
只需保留userId并添加一个布尔值isManager即可,如果用户是管理员,则其值为true,否则为false。
要获取员工列表及其经理的详细信息,请尝试以下操作:
SELECT employee.userID,
employee.userName,
manager.userID,
manager.userName
FROM Users AS employee
JOIN Users AS manager ON employee.managerID = manager.userID
ORDER BY employee.userName,
employee.userID;
要获取经理及其员工的列表,请尝试以下操作...
SELECT manager.userID,
manager.userName
employee.userID,
employee.userName,
FROM Users AS manager
JOIN Users AS employee ON manager.userID = employee.managerID
ORDER BY manager.userName,
manager.userID,
employee.userName,
employee.userID;
(说明如下...)
如果您有任何问题或意见,请随时发表评论。
您可以如下映射:
@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "user_id")
@GeneratedValue(strategy = ...)
private Long id;
@OneToMany(mappedBy = "manager")
private Set<User> employees;
@ManyToOne
@JoinColumn(name = "manager_id"
private User manager;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.