Wel*_*len 6 intellij-idea spring-boot
我是 Spring 启动新手。我尝试使用Spring Security和Hibernate来实现登录和注册功能。
首先,我使用 Hibernate 从数据库生成持久性映射实体类。我需要在UserEntity类中实现UserDetails接口,但是问题发生了。
我无法实现 UserDetails 中的方法。
当我尝试实现 getAuthorities 时发生错误。这里是错误信息。
“基本”属性类型不应是容器。检查信息:此检查检查以下 JPA 规范错误:
对于基于属性的访问,setter 和 getter 都应该存在 检查信息:此检查检查以下 JPA 规范错误:
这是我的代码。
package com.example.demo;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
@Entity
@Table(name = "user", schema = "demo", catalog = "")
public class UserEntity implements UserDetails {
private String username;
private String password;
private String role;
private String nickname;
private String phone;
@Override
public Collection<? extends GrantedAuthority> getAuthorities(){
String[] authorities=role.split(",");
List<SimpleGrantedAuthority> authorityList=new ArrayList<>();
for(String string:authorities)
authorityList.add(new SimpleGrantedAuthority(string));
return authorityList;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
@Id
@Column(name = "username", nullable = false, length = 16)
@Override
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Basic
@Column(name = "password", nullable = true, length = 32)
@Override
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Basic
@Column(name = "nickname", nullable = true, length = 32)
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Basic
@Column(name = "phone", nullable = true, length = 11)
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserEntity that = (UserEntity) o;
return Objects.equals(username, that.username) &&
Objects.equals(password, that.password) &&
Objects.equals(nickname, that.nickname) &&
Objects.equals(phone, that.phone);
}
@Override
public int hashCode() {
return Objects.hash(username, password, nickname, phone);
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个与 UserEntity 完全相同的类,并实现了 UserDetails,问题就消失了。也许这有点愚蠢,但我已经尝试过很多次了。我无法解决它。请帮忙。
归档时间: |
|
查看次数: |
14940 次 |
最近记录: |