JPA-显示与多对多Hashset ENUM的用户角色关系

时间:2014-08-23 18:12:24

标签: java hibernate jpa enums

我的DTO使用JPA Hibernate进行存储,我可以存储其他字段,但无法尝试为用户存储此关系。 userRoleSet HashSetENUM代表用户拥有的角色。一些用户没有角色,而某人将拥有1到3个角色。每个角色都不同。我如何在我的数据库中使用JPA表示这一点?目前,@ ManyToMany不起作用,我想念其他的东西?本质上,我需要能够查询数据库中的特定用户并让它返回分配给该用户的角色。

UserType Enums

public enum UserType
{
    ALPHA,BRAVO,CHARLIE
}

默认用户DTO JPA

@Entity
@Table(name = "users")
public class DefaultUser implements Serializable
{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "user_id")
    private long      user_id;

    @Column(name = "user_name")
    private String  user_name;

    @Column(name = "first_name")
    private String  firstName;

    @Column(name = "last_name")
    private String  lastName;

    @Column(name = "password")
    private String  password;

    @ManyToMany
    private Set<UserType> userRoleSet = new HashSet<UserType>();

    /**
     * @return the userTypes
     */
    public Set<UserType> getUserTypes()
    {
        return userRoleSet;
    }

    /**
     * 
     * @param userTypes
     *            the userTypes to set
     */
    public void setUserTypes(Set<UserType> userTypes)
    {
        this.userRoleSet = userTypes;
    }

    /**
     * @return the user_id
     */
    public long getUser_id()
    {
        return user_id;
    }

    /**
     * @return the user_name
     */
    public String getUser_name()
    {
        return user_name;
    }

    /**
     * @return the firstName
     */
    public String getFirstName()
    {
        return firstName;
    }

    /**
     * @return the lastName
     */
    public String getLastName()
    {
        return lastName;
    }

    /**
     * @return the password
     */
    public String getPassword()
    {
        return password;
    }

    /**
     * @param user_id
     *            the user_id to set
     */
    public void setUser_id(long user_id)
    {
        this.user_id = user_id;
    }

    /**
     * @param user_name
     *            the user_name to set
     */
    public void setUser_name(String user_name)
    {
        this.user_name = user_name;
    }

    /**
     * @param firstName
     *            the firstName to set
     */
    public void setFirstName(String firstName)
    {
        this.firstName = firstName;
    }

    /**
     * @param lastName
     *            the lastName to set
     */
    public void setLastName(String lastName)
    {
        this.lastName = lastName;
    }

    /**
     * @param password
     *            the password to set
     */
    public void setPassword(String password)
    {
        this.password = password;
    }
}

1 个答案:

答案 0 :(得分:0)

@ManyToMany注释用于映射两个实体之间的关联。对于简单类型的集合,要使用的注释为@ElementCollection

PS:您始终阅读发布您在“#34;无法正常工作”时所获得的完整且准确的错误消息。