gpt4 book ai didi

java - Spring Boot 仅在唯一时才将角色添加到数据库

转载 作者:行者123 更新时间:2023-12-01 18:06:18 24 4
gpt4 key购买 nike

我正在构建一个 Spring Boot 应用程序,它在用户和角色实体之间具有一对多的关系。

用户:

@Entity //Marks class as an entity for JPA
@Table(name="users") //Gives the table a name
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {

@Id //Marks variable as id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

private String name;
private String phoneNumber;
private String address;
private String email;
private String password;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name="user_role", joinColumns = @JoinColumn(name = "user_id"),inverseJoinColumns = @JoinColumn(name = "role_id"))
private Collection<Role> roles;

角色:

@Entity
@Getter
@Setter
@NoArgsConstructor
@Table(name="roles") //Gives the table a nam
public class Role {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
int id;

String role;

我试图做到这一点,以便当用户使用 CrudRepository 的存储库保存功能保存到数据库中时...

void addUser(User user) {
userRepository.save(user); //adds new user to db.
}

...在发送以下 Json 对象时,用户将被添加到数据库中,并且给定的角色类型也会附加到对象:

{
"name": "John Hancock",
"phoneNumber": "555-5555-555",
"address": "address...",
"email": "John@gmail.com",
"password": "adhajisdhakjsd",
"roles":[{
"role": "Admin"
}]
}

以下代码通过将 USER 添加到带有附加 ROLE 的数据库中来工作,但是添加具有相同角色的其他用户,会在数据库内添加一个新的相同 ROLE 行。

问题:有没有办法让新添加的用户只使用已有的 ROLE 而不添加新行?

最佳答案

您可以将“角色”设为主键。但最好不要在这个级别上这样做。

您可以在映射阶段映射角色。

关于java - Spring Boot 仅在唯一时才将角色添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60552481/

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