我已经在编程新的几个月,我正在开发我的第一个正式项目。当我试图通过分配角色来创建用户时,遇到了这个问题。我有一个用户类,它有一个集合roles=newhashset<>()。然后我有一个role类,它有一个字符串namerole,它与表的id相同。我使用insert将角色直接插入到db中。添加用户时出现以下异常:
事先谢谢你,我道歉,如果这将是琐碎的你,但我是新的编程。
javax.persistence.entitynotfoundexception:找不到id为string的com.work.portal.model.role
用户类
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "user")
@ApiModel(description = "Details about the user")
public class User implements Serializable, UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String lastname;
@ApiModelProperty(notes = "The user's email/username")
@Column(name = "email", unique = true)
private String username;
private String password;
@Type(type = "yes_no")
private Boolean requestChangePassword = Boolean.FALSE;
private Date dateCreated;
private Date dateLastLogin;
@Type(type = "yes_no")
private Boolean enabled= Boolean.TRUE;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id", columnDefinition = "BINARY(16)"),
inverseJoinColumns = @JoinColumn(name = "role_id", columnDefinition = "VARCHAR(16)"))
private Set<Role> roles = new HashSet<>();
public void addRole(Role role) {
this.roles.add(role);
角色类
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "role")
@ApiModel(description = "Details about the role")
public class Role implements Serializable {
@Id
@Column(columnDefinition = "VARCHAR(16)")
private String name;
}
用户服务方法adduser
@Autowired
private RoleRepository roleRepository;
public User addUser(User user) {
if (!user.getUsername().equals("admin")) {
user.addRole(roleRepository.findById("ROLE_ADMIN").get());
} else {
user.addRole(roleRepository.findById("ROLE_PARTNER").get());
}
return userRepository.save(user);
}
角色存储库
@Repository("roleRepository")
public interface RoleRepository extends JpaRepository<Role, String> {
}
1条答案
按热度按时间bgibtngc1#
尽管我很难理解为什么你需要一个完整的角色表而不是一个枚举属性,我还是建议你
私人设置角色;而不是私有集roles=new hashset<>();