是否可以使用@OneToMany关系在hibernate中映射Map <string,string>?</string,string>

时间:2011-10-24 17:11:23

标签: hibernate hibernate-mapping

我有一张桌子

权限

  • permission_id
  • PERMISSION_NAME
  • permission_desc

和表格 PermissionCategory 权限

的一对多关系

是否可以在一对多关系中返回地图而不是列表。 这就是我现在在 PermissionCategory 域中所做的事情:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(name = "perm_cat_map", joinColumns = { @JoinColumn(name = "perm_cat_id") }, inverseJoinColumns = { @JoinColumn(name = "permission_id") })
    private List<Permission> permissions = new ArrayList<Permission>(0);

可能有类似的东西:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
        @JoinTable(name = "perm_cat_map", joinColumns = { @JoinColumn(name = "perm_cat_id") }, inverseJoinColumns = { @JoinColumn(name = "permission_id") })
        private Map<String,String> permissions = new ArrayList<String,String>(0);

两个字符串为 permission_id permission_name

请告知,谢谢。

2 个答案:

答案 0 :(得分:2)

否:您如何向此地图添加新权限?

但您可以拥有Map<String, Persmission>(请参阅http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e10955),或者您可以为您的实体添加特定方法:

public Map<String, String> getPermissionMap() {
    Map<String, String> result = new HashMap<String, String>(permissions.size());
    for (Permission p : permissions) {
        result.put(p.getId(), p.getName());
    }
    return result;
}

答案 1 :(得分:0)