【发布时间】:2018-01-23 14:38:45
【问题描述】:
不幸的是,我有一个小的理解问题。 我正在尝试使用 JPA 通过 2 个表创建内部联接。
情况:
Table: Projects
Fields:
ID (PK)
Name
Table: Users
Fields:
ID (PK)
username
password
Table: permissions
Fields:
ID (PK)
permissionName
Table: permissionsMapping (NO PK)
project_id (FK => projects.ID
user_id (FK => users.ID)
permission_id (FK => permissons.ID)
我需要所有在权限映射表中至少有一个条目的项目。
重要的是要说您正在使用它来登录 REST 服务 OAuth2,因此应设置 Users.ID = Current User。
项目模型:
public class ProjectModel
{
@Column(name = "ID", nullable = false)
private long ID;
@Column(name = "Name", nullable = false)
private String Name;
enter code here
@OneToMany(cascade=CascadeType.ALL, targetEntity=PermissionsMappingModel.class)
private Set<PermissionsMappingModel> permissionsMapping;
}
权限映射模型:
public class PermissionsMappingModel
{
@Column(name = "project_id", nullable = false)
private long project_id;
@Column(name = "user_id", nullable = false)
private long user_id;
@Column(name = "permission_id", nullable = false)
private long permission_id;
}
问之间 如果我不在权限映射中使用@Id 注释,则服务不会 > 不再启动,因为它说它错过了标识符。那么我该如何 > 告诉他该表没有主键?
我现在如何最好地连接它? 在最好的情况下,我得到当前用户的所有项目 在第一步中,许可不会那么重要。获取权限映射表中当前用户的条目的所有项目非常重要。
正如我所描述的,我收到以下错误: 引起:org.hibernate.AnnotationException:非法尝试映射 非集合为 @OneToMany、@ManyToMany 或 ...
我意识到这可能是基础,但我还不太明白
谁能给我解释一下?
【问题讨论】:
标签: java jpa spring-boot inner-join