Hibernate 是否可以绘制地图<;字符串,字符串>;与@OneToMany关系处于休眠状态?

Hibernate 是否可以绘制地图<;字符串,字符串>;与@OneToMany关系处于休眠状态?,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我有一张桌子 权限: 许可证号 权限名称 许可说明 以及一个与权限具有一对多关系的表PermissionCategory 是否可以在一对多关系中而不是列表中返回映射。 这就是我现在在许可类别域中所做的: @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinTable(name = "perm_cat_map", joinColumns = { @JoinColumn(name = "perm_cat_i

我有一张桌子

权限

  • 许可证号
  • 权限名称
  • 许可说明
以及一个与权限具有一对多关系的表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\u cat\u map”,joinColumns={@JoinColumn(name=“perm\u cat\u id”)},inverseJoinColumns={@JoinColumn(name=“permission\u id”)})
私有列表权限=新建ArrayList(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);
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name=“perm\u cat\u map”,joinColumns={@JoinColumn(name=“perm\u cat\u id”)},inverseJoinColumns={@JoinColumn(name=“permission\u id”)})
私有映射权限=新建ArrayList(0);
其中两个字符串是权限\u id权限\u名称


请告知,谢谢。

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

但是您可以有一个
映射(请参阅),也可以向实体添加特定的方法:

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;
}
公共映射getPermissionMap(){ 映射结果=新的HashMap(permissions.size()); 用于(权限p:权限){ put(p.getId(),p.getName()); } 返回结果; }
我不能使用for循环解决方案,因为它会产生开销,这就是为什么我要寻找一种优化的方法来实现这一点,所以在讨论第一个解决方案时,你能告诉我字符串代表什么吗?它代表地图的键。它可以是权限实体的任何字符串属性,只要它对于给定类别是唯一的。跟随我给你的链接。我怀疑这个循环会是一个性能问题。它们都在内存中,而每次访问数据库时都有进程间甚至网络操作。我们这里说的是微秒和毫秒。