0

是否有可能直接从休眠中得到这个......

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

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

@Entity
public class SthLog {

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

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

4

1 回答 1

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);
}
于 2012-07-08T17:22:28.350 回答