Enum上的Hibernate AnnotationException未知实体

时间:2013-06-14 09:19:31

标签: hibernate jpa enums

我想为他们工作的每个组织分配不同的角色。我从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,或者至少不要将其作为枚举。

1 个答案:

答案 0 :(得分:0)

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

事实证明,在发布新问题之前,我应该花更长时间阅读博客文章和SO问题......