2011-11-02 27 views
0
@Entity 
public class Company { 

    public enum CompanyMemberLevel { 
     MEMBER, GAME_ADMIN, COMPANY_ADMIN 
    } 

    ... 

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

membersUser S(另一實體類),這些公司的部分集合,CompanyMemberLevel,指定該公司哪些權限,他們有一個枚舉(應保存爲字符串)。地圖<實體,枚舉>在JPA 2

我該如何註釋members才能達到我想要的效果?我只能找到關於Map<Basic, Entity>的示例,而不是相反。或者這張地圖在這裏是錯誤的結構?

(另外,我能得到更多的怪異和地圖Map<Entity, Set<Enum>>

回答

2

要回答具體問題:?

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

具體來說,見7.2.2.2和:

「@ MapKeyJoinColumn/@ MapKeyJoinColumns如果地圖密鑰類型是另一個實體。」

Howev呃,如果我有你想要的模型對象的模型,我寧願做它像這樣:

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

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

,因爲語義上它使得很多更有意義。