是否可以直接从hibernate得到结果...
List<Map<Sth, List<SthLog> list;
当以这种方式(非双向)映射类时?:
@Entity
public class SthLog {
@ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
private Sth sth; }
我知道这似乎是一个愚蠢的问题,因为通常你可以添加双向映射,但在这种情况下我可以更改实体定义,我想知道我是否可以直接从hibernate获得所需的结构。
答案 0 :(得分:2)
不要指望Hibernate为你做任何事情。将List转换为Map(或者是一个更容易,更合适的Guava Multimap)是3行代码的问题:
// get all the SthLog with their sth
List<SthLog> list =
session.createQuery("select s from SthLog s inner join fetch s.sth").list();
// index them by their sth
ListMultimap<Sth, SthLog> result = ArrayListMultimap.create();
for (SthLog sthLog : list) {
result.put(sthLog.getSth(), sthLog);
}