【发布时间】:2021-06-15 02:58:36
【问题描述】:
我正在尝试在 User 和 Role 之间建立 一对多 关系。
一个用户可以有多个角色。
这是用户类的代码
@Entity
public class User {
@Id
private int id;
private String name;
private String password;
private String email;
private String phoneNo;
@OneToMany(
targetEntity = Role.class,
mappedBy = "user",
cascade = CascadeType.ALL,
fetch = FetchType.LAZY
)
private Set<Role> roles;
// Getters, setters and Constructor
角色类的代码
@Entity
public class Role {
@Id
@GeneratedValue
private int roleId;
private String role;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
// Getters, setters and Constructor
POST request on Postman is
{
"id":101,
"name": "rahul",
"password": "456",
"email": "rahul@gmail.com",
"phoneNo": "1234561234",
"role": [{
"role":"USER"
}]
}
Code on Configuration part
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http)throws Exception
{
http.csrf().disable();
}
@Bean
public BCryptPasswordEncoder passwordEncoder()
{
return new BCryptPasswordEncoder();
}
}
Code On Controller part
@RestController
public class AdminController {
@Autowired
UserRepository userRepo;
@Autowired
BCryptPasswordEncoder encryptPassword;
@PostMapping("/admin/add")
public String addUserByAdmin(@RequestBody User user)
{
String pass = user.getPassword();
String encrypt = encryptPassword.encode(pass);
user.setPassword(encrypt);
userRepo.save(user);
return "User added Successfully";
}
}
角色表通过Jpa连接数据库
public interface RoleRepository extends JpaRepository<Role, Integer> {
}
用户表通过Jpa连接数据库
public interface UserRepository extends JpaRepository<User,Integer>{
}
这里的问题是用户表被正确映射但角色表没有被映射。
roleId role user_id
NULL NULL NULL
我哪里错了?谁能帮帮我?
【问题讨论】:
-
你能分享一下你如何保存这个的代码(在服务上)吗?
-
@junbetterway 我已经更新了代码。请仔细查看。
标签: spring spring-boot hibernate spring-security spring-data-jpa