如何使用 Dozer 将一组整数映射到一组对象?
How to map a set o Integer to a set of Objects with Dozer?
我有一组使用休眠从 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;
由于性能问题,我无法在数据库中获取整个对象,也没有使用延迟获取。但是我想使用 Dozer 将所有的 ID 映射到真正的 POJO,这样当我需要整个对象时,我可以通过我已经拥有的 ID 来获取它。
我解决了为 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;
}
}
一旦完成,我就有了一组我想要的对象,如果需要,我可以在数据库中搜索,提供附加数据的 ID。
我有一组使用休眠从 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;
由于性能问题,我无法在数据库中获取整个对象,也没有使用延迟获取。但是我想使用 Dozer 将所有的 ID 映射到真正的 POJO,这样当我需要整个对象时,我可以通过我已经拥有的 ID 来获取它。
我解决了为 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;
}
}
一旦完成,我就有了一组我想要的对象,如果需要,我可以在数据库中搜索,提供附加数据的 ID。