Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用推土机将一组o整数映射到一组对象?_Java_Hibernate_Dozer - Fatal编程技术网

Java 如何使用推土机将一组o整数映射到一组对象?

Java 如何使用推土机将一组o整数映射到一组对象?,java,hibernate,dozer,Java,Hibernate,Dozer,我用hibernate从db中得到一组整数 @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "artigo_idioma", joinColumns=@JoinColumn(name="id_artigo")) @Column(name = "id_idioma") @Fetch(FetchMode.JOIN) private Set<Integer> idiomas; @ElementColl

我用hibernate从db中得到一组整数

@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "artigo_idioma", joinColumns=@JoinColumn(name="id_artigo"))
@Column(name = "id_idioma")
@Fetch(FetchMode.JOIN)
private Set<Integer> idiomas;
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name=“artigo\u idioma”,joinColumns=@JoinColumn(name=“id\u artigo”))
@列(name=“id\u idioma”)
@Fetch(FetchMode.JOIN)
私有集习语;

由于性能问题,我无法在数据库中获取整个对象,也不能使用延迟抓取。但是我想使用Dozer将所有Id映射到真实的POJO,这样当我需要整个对象时,我可以通过我已有的Id来获得它。

我解决了这个问题,为集合实现了一个自定义Dozer

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


}
公共类SetIdIdiomaToSetIdioma扩展了DozerConverter{
公鸡{
超级(Set.class,Set.class);
}
@凌驾
公共集合convertFrom(集合ID、集合ID){
如果(ids!=null&&ids.size()>0){
idiomas=新的HashSet();
用于(对象:ID){
if(object.getClass().equals(Integer.class)){
整数id=(整数)对象;
如果(id!=null){
成语a成语a=新成语a();
习语:setIdIdioma(id);
添加(成语a);
}
}
}
}
返回惯用法;
}
@凌驾
公共集合convertTo(集合习语、集合ID){
if(idiomas!=null&&idiomas.size()>0){
ids=新的HashSet();
for(对象:idiomas){
成语a成语a=(成语a)对象;
if(idioma!=null&&idioma.getIdIdioma()!=null)
add(idioma.getIdIdioma());
}
}
返回ID;
}
}
一旦完成,我就有了一组我想要的对象,如果需要,我可以在db中搜索,并提供传统数据的id