JPA - testando um mapeamento Many-To-Many

6 respostas
idev4web

Eu fiz um mapeamento do many-to-many entre usuario e grupo
tem uma tabela que relaciona usuario com grupos

Como eu realizo um caso de teste:

Usuario usr = new Usuario();
usr.setLogin("dan");
usr.setSenha("123");

Grupo gr1 = new Grupo();
gr1.setNome("admin");
		
Grupo gr2 = new Grupo();
gr2.setNome("gestor");
		
usr.getGrupos().add(gr1);
usr.getGrupos().add(gr2);
		
usuarioDao.save(usr); //ocorre uma chamada getJpaTemplate().persist ...

So que nao funciona. Como fazer um caso de teste?
Antes eu usava dirty read e agora?

6 Respostas

_fs

O many-to-many é bidirecional? Como está o mapeamento de ambas as classes?

Quinger

Olá!

Estou com o mesmo caso, um usuário tem grupos e eu preciso atualizar o objeto Usuário, e caso tenha adcionado grupos ele deve persistir em uma tabela associativa.

Fiz o mapeamento bidirecional com JPA.

felipeguerra

Eu fiz algo pareido, mas ainda não testei todos cenários:

public class Pessoa implements Serializable {

	public Pessoa() {
	}
	
	private static final long serialVersionUID = -7200710621590602711L;
	
	private Set<Carona> caronas = new HashSet<Carona>();

	/**
	 * Getter of the property <tt>carona</tt>
	 *
	 * @return Returns the carona.
	 *
	 */
	@ManyToMany(cascade={CascadeType.ALL}, fetch=FetchType.EAGER)
	@JoinTable(name="Pessoa_Carona", joinColumns={@JoinColumn(name="idPessoa")}, inverseJoinColumns={@JoinColumn(name="idCarona")})
	public Set<Carona> getCaronas()	{
		return caronas;
	}
}
@Entity
public class Carona implements Serializable {

        private Set<Pessoa> passageiros = new HashSet<Pessoa>();

	@ManyToMany(mappedBy="caronas", fetch=FetchType.EAGER)
	public Set<Pessoa> getPassageiros() {
		return passageiros;
	}
}

Depois eu adiciona uma pessoa aos passageiros e a carona ao passageiro, depois dou um merge na pessoa;

71C4700

Acredito que da maneira que felipeguerra esta fazendo esta correto.
Pois devemos persistir a entidade que possui a chave estrgandeira.
Mesmo sendo ManyToMany.
vlw

Quinger

Mas não funcionou.

Tem um caso muito semelhante ao do felipeguerra . A única diferença é que minha chave-primária é um varchar.

Minha arquitetura está utilizando Spring + JPA/Hibernate como vendor.

Alguém por favor poderia me ajudar?

felipeguerra

Qual é exatamente o problema?

Criado 20 de junho de 2008
Ultima resposta 22 de jul. de 2008
Respostas 6
Participantes 5