枚举上的Hibernate AnnotationException未知实体

枚举上的Hibernate AnnotationException未知实体,hibernate,jpa,enums,Hibernate,Jpa,Enums,我想为每个用户所在的组织分配不同的角色。我从中得到了实体授权角色的想法 但是,当我尝试运行单元测试时,它们在加载应用程序上下文时都失败了,因为Hibernate找不到实体角色。GrantedRole已添加到my persistence.xml中。 我得到的错误是: org.hibernate.AnnotationException:@OneToOne或@ManyToOne打开 com.onior.modm.registration.domain.GrantedRole.role引用了 未知实体:

我想为每个用户所在的组织分配不同的角色。我从中得到了实体授权角色的想法

但是,当我尝试运行单元测试时,它们在加载应用程序上下文时都失败了,因为Hibernate找不到实体角色。GrantedRole已添加到my persistence.xml中。 我得到的错误是:

org.hibernate.AnnotationException:@OneToOne或@ManyToOne打开 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代码忽略了setter。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的角色,或者至少不要将其设为enum。

啊,我想我知道出了什么问题。我将GrantedRole声明为一个manytone关系,但它期望Role是一个实体,而事实并非如此。我删除了
@manytone
部分,现在一切正常:)

事实证明,在发布新问题之前,我应该多花半个小时阅读博客帖子和其他问题