2017-02-15 7 views
0

У меня есть набор целых чисел, которые я получаю от дб с HibernateКак сопоставить набор o Целое число с множеством объектов с бульдозером?

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

Я не могу получить весь объект в БД из-за вопрос Perfomance, и ни один не использовать ленивые выборку данных. Но я хотел бы сопоставить все идентификаторы с реальным POJO с помощью Dozer, так что, когда мне нужен весь объект, я могу получить его с помощью идентификатора, который у меня уже есть.

ответ

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 идентификатора для услуги для покупателей данные.