我有 2 类用户和权限 我希望当用户注册时,权限表中的 fk 会自动设置为创建的用户 ID
用户类别:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "enabled")
private Byte enabled = 1;
@JsonManagedReference
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Authorities> authorities = new ArrayList<>();
权威类:
@Entity
@Table(name = "authorities")
public class Authorities {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "authority")
private String authority;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "fk_user")
private User user;
这是注册的控制器:
@PostMapping("registration" )
public String addUser(@ModelAttribute ("addUser") User user){
String username = user.getUsername();
String password = user.getPassword();
userService.save(user);
Authorities authorities = new Authorities(username,"ROLE_USER");
authoritiesService.save(authorities);
return "redirect:registration";
}
方言:
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
编辑:
我尝试过这个解决方案:
Authorities authorities = new Authorities(username,"ROLE_USER",user);
但我不知道是否正确,或者 fk 应该自动分配
您甚至不需要调用authoritiesService.save(authorities)来保存您的权限,您需要执行与编辑部分中所做的相反的操作: 将权限添加到用户对象,保存用户,权限将自动保存(前提是您正确映射了它们)。
@PostMapping("registration" )
public String addUser(@ModelAttribute ("addUser") User user){
String username = user.getUsername();
String password = user.getPassword();
Authorities authorities = new Authorities(username,"ROLE_USER");
user.getAuthorities().add(authorities);
userService.save(user);
return "redirect:registration";
}