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'註釋並嘗試。 –