JPA-显示带有多对多哈希集enum的用户角色关系



我的DTO正在使用JPA Hibernate存储,我能够存储其他字段,但在尝试为用户存储此关系时遇到麻烦。userRoleSet HashSet有代表用户角色的ENUM s。有些用户没有角色,有些用户有1到3个角色。每个角色都是不同的。我如何得到关于表示这在我的数据库和使用JPA ?此刻,@ many many不起作用,我错过了什么?从本质上讲,我需要能够查询数据库中的特定用户,并让它返回分配给该用户的角色。

UserType枚举

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;
    }
}

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

PS:你总是阅读post完整和准确的错误信息时,你得到的东西"不工作"

最新更新