2017-02-15 13 views
0

私は理由もパフォーマンスの問題のDBにオブジェクト全体を取得していない、とどちらも遅延フェッチを使用することはできませんハイバネート集合体を集合体にどのように写像するか?

@ElementCollection(fetch = FetchType.EAGER) 
@CollectionTable(name = "artigo_idioma", [email protected](name="id_artigo")) 
@Column(name = "id_idioma") 
@Fetch(FetchMode.JOIN) 
private Set<Integer> idiomas; 

をDBから取得する整数の集合を持っています。しかし、すべてのIDをドーザーを使って実際のPOJOにマッピングしたいので、オブジェクト全体が必要なときに、既に持っているIDで取得できます。

答えて

0

私は私がaditionalのIDをprovindingデシベルで検索することができ、私は必要な場合、私は、私がしたいオブジェクトのセットを持って行っています一度それが設定

public class SetIdIdiomaToSetIdioma extends DozerConverter<Set, Set>{ 


public SetIdIdiomaToSetIdioma() { 
    super(Set.class, Set.class); 
} 

@Override 
public Set<Idioma> convertFrom(Set ids, Set idiomas) { 
    if(ids != null && ids.size() > 0){ 
     idiomas = new HashSet<Idioma>(); 
     for (Object object : ids) { 
      if(object.getClass().equals(Integer.class)){ 
       Integer id = (Integer) object; 
       if(id != null){ 
        Idioma idioma = new Idioma(); 
        idioma.setIdIdioma(id); 
        idiomas.add(idioma); 
       } 
      } 
     } 
    } 

    return idiomas; 
} 

@Override 
public Set<Integer> convertTo(Set idiomas, Set ids) { 
    if(idiomas != null && idiomas.size() > 0){ 
     ids = new HashSet<Integer>(); 
     for (Object object : idiomas) { 
      Idioma idioma = (Idioma) object; 
      if(idioma != null && idioma.getIdIdioma() != null) 
       ids.add(idioma.getIdIdioma()); 
     } 
    } 
    return ids; 
} 


} 

のカスタムドーザを実装解決データ。

関連する問題