Ich versuche, meine Web-Anwendung zu starten, aber ich Ausnahme:Userdetails und Hibernate Ausnahme
java.util.Collection, at table: user, for columns: [org.hibernate.mapping.Column(authorities)]
Ich bin für agglutinieren Code sorry, aber es erfordert weniger Code und weitere Details.
Es ist mein Benutzer Einheit:
@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; }
}
Und es ist die Rolle Einheit:
@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;}
}
In Ihrer 'User' Klasse haben Sie zwei Methoden' getAuthorities (..) 'und' getRoles (..) 'beide gibt' roles' zurück. Benötigen Sie die 'getAutrhorities (..)' Methode und es gibt auch kein "OneToMany" Mapping im Hibernate. Vielleicht möchten Sie das entfernen und versuchen? –
@MadhusudanaReddySunnapu gut, ich kann Methode 'GetAuthorities()' nicht löschen, aber ich versuche, 'null' zurückgeben und ich bekomme die gleiche Ausnahme –
Es geht nicht darum, was es zurückgibt. Können Sie die Anmerkung "Transient" für diese Methode hinzufügen und versuchen. –