-
Use the
select new map
syntax in HQL to fetch the results of each row in aMap
. Take a look at the following question, that addresses the issue: How to fetch hibernate query result as associative array of list or hashmap.
For instance, the following HQL:select new map(perm.id as pid, perm.name as pname) from Permission perm
will return aList
ofMap
s, each one with keys “pid” and “pname”. -
It is not possible to map an association to a
Map<String, String>
. It is possible to map the key of the Map to a column with the@MapKeyColumn
annotation in the association. See this question, that also addresses the issue, for an example: JPA 2.0 Hibernate @OneToMany + @MapKeyJoinColumn. Here is another example.
@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);