2017-02-15 106 views
0

我有一組我從數據庫獲取與Hibernate如何使用Dozer將一個整數集合映射到一組對象?

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

的整數,我不能得到,因爲演出內容問題的分貝整個對象,既不使用延遲裝載。但是我想用Dozer將所有的Ids映射到真正的POJO,這樣當我需要整個對象時,我可以通過我已有的Id獲取它。

回答

0

我解決它實現自定義的推土機爲Set

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; 
} 


} 

一旦完成我有一組我想要的對象,如果我需要,我可以在數據庫搜索provinding id爲aditional的數據。

相關問題