0

これを休止状態から直接取得することは可能ですか...

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

クラスがそのような方法で (双方向ではなく) マップされる場合:

@Entity
public class SthLog {

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

通常は双方向マッピングを追加できるため、これはばかげた質問のように思えるかもしれませんが、この場合はエンティティ定義を変更でき、休止状態から直接必要な構造を取得できるかどうか疑問に思います。

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 に答える