Hibernate聚合

时间:2012-07-08 15:32:53

标签: java hibernate hibernate-annotations

是否可以直接从hibernate得到结果...

List<Map<Sth, List<SthLog> list;

当以这种方式(非双向)映射类时?:

@Entity
public class SthLog {

        @ManyToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
    private Sth sth; }

我知道这似乎是一个愚蠢的问题,因为通常你可以添加双向映射,但在这种情况下我可以更改实体定义,我想知道我是否可以直接从hibernate获得所需的结构。

1 个答案:

答案 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);
}