我想为他们工作的每个组织分配不同的角色。我从another SO question得到了实体GrantedRole的想法。
但是,当我尝试运行单元测试时,它们都无法加载应用程序上下文,因为Hibernate无法找到实体Role。 GrantedRole被添加到我的persistence.xml中。 我得到的错误是:
org.hibernate.AnnotationException:@OneToOne或@ManyToOne on com.onior.modm.registration.domain.GrantedRole.role引用了一个 未知实体:com.onior.modm.registration.domain.GrantedRole $ Role
当我将GrantedRole.Role添加到persistence.xml时,我得到:
javax.persistence.PersistenceException:[PersistenceUnit: modm-persistence]类或包未找到
引起:java.lang.ClassNotFoundException: com.onior.modm.registration.domain.GrantedRole.Role
我的GrantedRole代码,我遗漏了二传手。 DomainEntity是我所有实体的超类。
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import javax.validation.constraints.NotNull;
import org.springframework.security.core.GrantedAuthority;
@SuppressWarnings("serial")
@Entity
@Table(name = "role_assignments", uniqueConstraints = @UniqueConstraint(columnNames = {
"user", "organization"}))
public class GrantedRole extends DomainEntity implements GrantedAuthority {
private User user;
private Role role;
private Organization organization;
public enum Role {
USER, ORGADMIN, ADMIN
}
public GrantedRole() {
super();
}
public GrantedRole(User user, Role role, Organization organization) {
super();
this.user = user;
this.role = role;
this.organization = organization;
}
@ManyToOne
@NotNull
public User getUser() {
return user;
}
@ManyToOne
@NotNull
@Enumerated(EnumType.STRING)
public Role getRole() {
return role;
}
我该怎么做才能解决这个问题?我希望将角色保持为en enum,或者至少不要将其作为枚举。
答案 0 :(得分:0)
@ManyToOne
部分,现在一切正常:)
事实证明,在发布新问题之前,我应该花更长时间阅读博客文章和SO问题......