[英]How to map Join table as Entity JPA
在我的系统中,我有User
, User
可以是Manager
或客户,甚至可以购买。 Manager
可以有很多Clients
, Client
可以有很多 manager。 Manager
被表示为manager_id
在managers_clients
,因此,如果User
是经理,我们将他的ID存储到该列。 客户端也是如此。
我的数据库表如下所示:
users (table)
UUID FIRST_NAME LAST_NAME
1 Bob Way
2 Sarah Smith
managers_clients (table)
ID MANAGER_ID CLIENT_ID
1 1 1
2 1 2
现在这里的MANAGER_ID
和CLIENT_ID
是对users.id
引用
我知道可以创建第三个实体Manager
并将它们与这个数据透视表联系起来......但我试图在没有它的情况下实现。
我当前的实体如下所示:
public class UserEntity {
@Id
@GeneratedValue(strategy = AUTO)
private UUID uuid;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToMany
private List<ManagerClientEntity> managers;
@OneToMany
private List<ManagerClientEntity> clients;
}
public class ManagerClientEntity {
@Id
@GeneratedValue(strategy = AUTO)
private UUID uuid;
@ManyToOne
private UserEntity manager;
@ManyToOne
private UserEntity client;
}
但是,当然,它不起作用......
我是 JPA 和 Java 的新手,所以不知道应该如何映射我的实体?
看起来您的用户和客户之间存在多对多连接。 您不需要将您的桥接表作为一个单独的实体来管理......相反,您可以在ClientEntity
和UserEntity
上使用带有相应@JoinTable
的@ManyToMany
注释
public class UserEntity {
@ManyToMany
@JoinTable(name = "manager_client") // specify your bridge table here
private List<ClientEntity> clients;
}
public class ClientEntity {
@ManyToMany
@JoinTable(name = "manager_client")
private List<UserEntity> users;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.