Olá, michael-pr!
Bem, acho q tenho uma coisa parecida aki que pode te ajudar...
Para salvar uma lista de arquivos vinculadas a um bean temos que salvar arquivo por arquivo, na "unha".
Temos esses Beans:
Code:
@Entity
public class Email implements Serializable {
private static final long serialVersionUID = 1L;
protected Integer cdemail;
protected String mensagem;
protected Set<Anexo> listaAnexo = new ListSet<Anexo>(Anexo.class);
//Gets and Sets
}
Code:
@Entity
public class Anexo implements Serializable {
private static final long serialVersionUID = 1L;
protected Integer cdanexo;
protected Email email;
protected Arquivo arquivo;
//Gets and Sets
}
Criamos uma função no AnexoService que grava os arquivos da lista um a um:
Code:
public void saveAnexo(Email email) {
Set<Anexo> listaAnexo = email.getListaAnexo();
if (listaAnexo != null && listaAnexo.size() > 0) {
for (Anexo anexo : listaAnexo) {
arquivoDAO.saveFile(anexo, "arquivo");
}
}
}
E por fim, sobrescrevemos as funções updateSaveOrUpdate, saveOrUpdate e delete de "EmailDAO":
Code:
@Override
public void updateSaveOrUpdate(final SaveOrUpdateStrategy save) {
Email email = (Email) save.getEntity();
anexoService.saveFotosAnexo(email);
save.saveOrUpdateManaged("listaAnexo");
}
Code:
@Override
public void saveOrUpdate(final Email email) {
transactionTemplate.execute(new TransactionCallback(){
public Object doInTransaction(TransactionStatus arg1) {
EmailDAO.super.saveOrUpdate(email);
return null;
}});
}
Code:
@Override
public void delete(Email bean) {
List<Anexo> findBy = anexoService.getByEmail(bean);
for (Anexo anexo : findBy) {
anexoService.delete(anexo);
arquivoDAO.delete(anexo.getArquivo());
}
super.delete(bean);
}
Espero que tenha ajudado.
Um abraço!