0
我想开始我的web应用程序,但我得到异常:的UserDetails和休眠例外
java.util.Collection, at table: user, for columns: [org.hibernate.mapping.Column(authorities)]
我很抱歉粘合代码,但SO需要更少的代码和更多的细节。
这是我的用户实体:
@Entity
@Table(name = "user")
public class User extends BaseEntity implements UserDetails {
private String email;
private String password;
private Set<Role> roles;
@Column(name = "email", nullable = false, unique = true)
public String getEmail() {return email;}
public void setEmail(String email) {this.email = email;}
@Column(name = "password", nullable = false)
public String getPassword() {return password;}
public void setPassword(String password) {this.password = password;}
@ManyToMany
@JoinTable(name = "user_role",
joinColumns = {@JoinColumn(name = "user", referencedColumnName = "id")},
inverseJoinColumns = {@JoinColumn(name = "role", referencedColumnName = "name")})
public Set<Role> getRoles() { return roles; }
public void setRoles(Set<Role> role) {this.roles = role;}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {return roles;}
@Override
public String getUsername() { return email; }
@Override
public boolean isAccountNonExpired() {return true; }
@Override
public boolean isAccountNonLocked() { return true; }
@Override
public boolean isCredentialsNonExpired() { return true; }
@Override
public boolean isEnabled() { return true; }
}
而且它的角色实体:
@Entity
@Table(name = "Role")
public class Role implements GrantedAuthority, Serializable {
private String name;
@Id
@Column(name = "name")
public String getName() {return name;}
public void setName(String name) { this.name = name; }
@Override
public String getAuthority() {return name;}
}
在你的'User'类中,你有两个方法'getAuthorities(..)'和'getRoles(..)'都返回'roles'。你需要'getAutrhorities(..)'方法,也没有任何休眠'OneToMany'映射。你可能想删除它并尝试? –
@MadhusudanaReddySunnapu好吧,我不能删除'getAuthorities()'方法,但我尝试返回'null',并且得到相同的异常 –
这与它返回的内容无关。你可以在这个方法上添加'Transient'注释并尝试。 –