gpt4 book ai didi

java - Spring Data Rest——如何建立关联关系

转载 作者:行者123 更新时间:2023-11-30 12:03:39 24 4
gpt4 key购买 nike

我有两个类,RolePermission,它们之间存在多对多关系。我的问题是每个关系都有一些额外的数据,因此我认为我需要创建一个中间类来存储这些额外的数据,这就是 RolePermission 类。

这基本上就是我所拥有的,parameterdomain 是每个关系所需的额外数据。

enter image description here

这是我现在的类(class)代码。

角色.java

@Entity
@Table(name = "Sec_Role")
@DynamicUpdate
public class Role {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String description;
private String name;

// This is another relationship which is working just fine (because there are no intermediary data needed.
@ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER)
private Set<Group> groups;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "role")
private List<RolePermission> permissions = new ArrayList<RolePermission>(0);

...Standard getters and setters and constructor

权限.java

@Entity
@Table(name = "Sec_Permission")
public class Permission {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "permission")
private List<RolePermission> roles = new ArrayList<RolePermission>(0);

...Standard getters and setters and constructor

角色权限.java

@Entity
@Table(name = "Sec_Role_Permission")
@DynamicUpdate
public class RolePermission {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int domain;
private String parameter;
@Column(updatable = false, insertable = false)
private int role_id;
@Column(updatable = false, insertable = false)
private int permission_id;

@ManyToOne(fetch = FetchType.LAZY )
@JoinColumn(name = "role_id", nullable = false)
private Role role;

@ManyToOne(fetch = FetchType.LAZY )
@JoinColumn(name = "permission_id", nullable = false)
private Permission permission;

...Standard getters and setters and constructor

每个类都有一个像这样的标准存储库

@RepositoryRestResource(path = "roles")
public interface RoleRepository extends CrudRepository<Role, Integer> {

}

现在这段代码可以很好地读取数据和关系,我的问题是我无法弄清楚我应该做什么或调用什么端点来添加/修改/删除角色之间的关系> 和 Permission

目前,如果我调用 /roles/11/permissions,我会得到这个:

{
"_embedded": {
"rolePermissions": []
},
"_links": {
"self": {
"href": "http://localhost:8887/api/v1/roles/11/permissions"
}
}
}

如何为这个角色添加权限?

我尝试使用以下 JSON 正文对 /roles/11/permissions 执行 POST 请求,我得到了 204 No Content 响应。这基本上意味着成功,但是当我向 /roles/11/permissions 发出 GET 请求时,我没有看到 ID 1 的权限,所以它没有工作。

{
"domain": 0,
"parameter": "Some param",
"role_id": 11,
"permission_id": 1
}

最佳答案

由于您的映射本身是一个实体,您可以根据资源(在本例中为RolePermission)为您的API 建模。基本上当你想提供一个 API 来添加 rolepermission

类似的东西

http://localhost:8887/api/v1/rolepermission

POST

{
"roleid":"xxxxx"
"permissionid":"xxxxxx"
"parameterid":"xxxxxx"
"domain":"xxxxx"

}

关于java - Spring Data Rest——如何建立关联关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com