代码之家  ›  专栏  ›  技术社区  ›  Dejell

休眠映射<key,set<value>>

  •  2
  • Dejell  · 技术社区  · 14 年前

    我有以下表格:

    @Entity
    @Table(name = "events")    
    Event
        --id
        --name
    
    @Entity
    @Table(name = "state")    
    State
        --id
        --name
    
    @Entity
    @Table(name = "action")    
    Action
        --id
        --name
    @Entity
    @Table(name = "state_event_action")
        StateEventAction
    --id
    --state_id
    --event_id
    --action_id
    

    我想进去 state 类获取 map<key, set<value>> 属于 Map<Event, set<StateEventAction>>

    冬眠时我该怎么做?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Igor Grinfeld    14 年前

    @Entity 
    @Table(name = "state_event_action") 
    StateEventAction 
    --id 
    --state_id 
    --event_id 
    --Set<action> actions
    

    @Entity @Table(name = "state")     
    State 
        --id 
        --name 
     Map<Event,StateEventAction> eventActions;
    
        2
  •  6
  •   Pascal Thivent    14 年前

    map<key, Set<value>> Map<Event, Set<StateEventAction>>

    UserCollectionType blog post MultiMap

    Multimap

        3
  •  1
  •   3urdoch    14 年前

    State state = // < the state object;
    Query q = Session.createQuery("from StateEventAction sea inner join fetch sea.event where sea.state = :state");
    q.setEntity("state", state);
    
    Map<Event, Set<StateEventAction>> map = new HashMap<Event, Set<StateEventAction>>();
    
    for(Iterator itr = q.list().iterator(); itr.hasNext();) {
       StateEventAction sea = itr.next();
       Event event = sea.getEvent();
       Set<StateEventAction> theSet = map.get(event);
       if(theSet == null) {
          theSet = new HashSet<StateEventAction>();
          map.put(event, theSet);
       }
       theSet.add(sea);
    }
    
    推荐文章