如何使用 HQL 返回 Map

2024-03-23

我有一张桌子

允许:

  • id
  • name
  • desc

我现在在做什么 是进行返回权限对象的查询,然后以编程方式将值放入映射中

1-但我想知道是否可以制作 HQL(如果不可能,则制作本机 sql)来选择权限ID, 权限名称并将它们返回到地图中。

2-是否可以以一对多关系返回映射而不是以下列表或集合

@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);

两个字符串在哪里权限ID, 权限名称.


  1. Use the select new mapHQL 中的语法来获取 a 中每一行的结果Map。看看下面的问题,它解决了这个问题:如何获取 Hibernate 查询结果作为列表或哈希图的关联数组 https://stackoverflow.com/q/925363/851811。 例如,以下 HQL:select new map(perm.id as pid, perm.name as pname) from Permission perm将返回一个List of Maps,每个都有键“pid”和“pname”。

  2. 无法将关联映射到Map<String, String>。可以使用以下命令将 Map 的键映射到列@MapKeyColumn http://download.oracle.com/javaee/6/api/javax/persistence/MapKeyColumn.html关联中的注释。请参阅这个问题,它也解决了这个问题,例如:JPA 2.0 Hibernate @OneToMany + @MapKeyJoinColumn https://stackoverflow.com/q/5076871/851811. Here http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Example_of_a_map_key_join_column_relationship_annotation另一个例子。


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 HQL 返回 Map 的相关文章

随机推荐