Não consigo salvar collection usando merge!

1 resposta
T

Pessoal, boa tarde!

Boa tarde!!!

Pessoal, estou com o seguinte problema:

Tenho um método do meu dao para atualizar/adicionar .

/**
 	 * Atualiza o objeto da session. Usando o merge!.
 	 * @param u Objeto passado
 	 */
 	public void atualiza (T u) {
 		logger.debug("updating " + u + "on table " + this.clazz);
 		this.session.merge(u);
 	}

O método funciona blz quando vou incluir, o problema está acontecendo quando eu vou atualizar uma coleção dele, ele atualiza tudo menos a coleção.

public class Manutencao implements Serializable{
 
 private Set<Servidor> servidor;
 
 
 @ManyToMany(fetch=FetchType.LAZY)
 	@JoinTable(name="ctbc_datac_manutencao_servidor",
 				joinColumns={@JoinColumn(name="fk_manutencao")},
 				inverseJoinColumns={@JoinColumn(name="fk_servidor")})
 	public Set<Servidor> getServidor() {
 		return servidor;
 	}
 	public void setServidor(Set<Servidor> servidor) {
 		this.servidor = servidor;
 	}

Andei pesquisando o pode ser que ele está ignorando a entidade gerenciada.

Como poderei resolver essa questão???

Desde de já agradeço a atenção e ajuda de todos.

Um abraço,

1 Resposta

T

Pessoal, eu acho que consegui resolver parte do problema a lista está sendo gravada no banco, porem quando eu vou editar e gravar os dados nela ela não grava as alterações.

*Obs: Estou utilizando o VRaptor.

Na minha lógica ficou assim:

@SuppressWarnings("unchecked")
	public String armazena(Manutencao manutencao) {
		System.out.println("???? Dentro do armazena... ");
		// Fundindo uma instância transient para uma instância persistente.
		Manutencao manu = this.daoFactory.getManutencaoDao().merge(manutencao);
		
		//System.out.println("??? Servidores do manute merge... " + manutencao.getServidor().size());
		Set<Servidor> servidoresAtual = (Set<Servidor>) session.getAttribute("servidores");
		// Atualiza a coleção de servidores
		if (servidoresAtual!=null && !servidoresAtual.isEmpty()){
			System.out.println("??? Servidores" + servidoresAtual.size());
			
			for(Servidor ser: servidoresAtual){
				System.out.println("Varrendo servidores Dentro do armazena após adicionar");
				System.out.println("Server.... " + ser.getHostName());
			}
			manu.setServidor(servidoresAtual);
		}
		
		if (validaArmazena(manu)) {
			this.daoFactory.beginTransaction();
			this.daoFactory.getManutencaoDao().atualiza(manu);
	System.out.println("???? Depois do atualizar...");
			this.daoFactory.commit();
			this.lista();
			session.removeAttribute("servidores");
			return "ok";
		} else {
			if (manu != null && manu.getId() != null) {
				this.editar(manu);
			} else {
				this.manutencao = manu;
			}
			return "invalid";
		}
	}

O que pode estar acontecendo?

Criado 8 de outubro de 2007
Ultima resposta 8 de out. de 2007
Respostas 1
Participantes 1