繁体   English   中英

地图 地图<Entity, Enum>在 JPA 2

[英]Map Map<Entity, Enum> in JPA 2

@Entity
public class Company {

    public enum CompanyMemberLevel {
        MEMBER, GAME_ADMIN, COMPANY_ADMIN
    }

    ...

    private Map<User, CompanyMemberLevel> members = new HashMap<User, CompanyMemberLevel>();

members是属于公司一部分的User (另一个实体类)的集合, CompanyMemberLevel是一个枚举,用于指定他们在该公司中拥有的权限(应保存为字符串)。

我应该如何注释members以实现我想要的? 我只能找到关于Map<Basic, Entity>例子,而不是相反。 或者这张地图在这里的结构错误?

(另外,我可以变得更奇怪并映射Map<Entity, Set<Enum>>吗?

具体回答这个问题:

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-indexed

具体参见第 7.2.2.2 节,并且:

“@MapKeyJoinColumn/@MapKeyJoinColumns 如果映射键类型是另一个实体。”

但是,如果我必须对您要建模的对象进行建模,我宁愿这样做:

class Company {
    @OneToMany private Set<User> users;
    ...
}

class User {
    @ElementCollection Set<CompanyMemberLevel> memberLevels;
    ...
}

因为在语义上它更有意义。

但这对于 Hibernate 5.4 试试这个

    @ElementCollection
    @CollectionTable(name = "members")
    @Column(name = "role")
    @Enumerated(EnumType.STRING)
    private Map<User, CompanyMemberLevel> members;

这里描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM