Many-to-many não persiste na tabela de Join

3 respostas
breno.oliveira

Olás,

Tenho as seguintes entities

@Entity
@Table(name = "users")
public class User implements Serializable {

	@Id @GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;
	
	@Column
	private String email;
	
	@Column(name = "hashed_password")
	private String password;

	@Column(name = "account_status")
	private boolean accountStatus;

	@ManyToMany(targetEntity = Role.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinTable(name = "users_has_roles",
            joinColumns = @JoinColumn(name = "users_id"),  
            inverseJoinColumns = @JoinColumn(name = "roles_id")  
    )  
	private Collection<Role> roles;

	public boolean addRole(Role role) {
		if(roles == null) {
			roles = new HashSet<Role>();
		}
		return roles.add(role);
	}
     //getters and setters
}
E a outra
@Entity
@Table(name = "roles")
public class Role implements Serializable {

	private static final long serialVersionUID = -8141540060286714020L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	
	@Column
	private String name;
}

Na entity user eu tenho a tabela de relacionamento users_has_roles porém quando gravo um user com uma role, não é persistido os dados nessa tabela onde são feitos os joins.

Eu preciso criar uma entity para poder persistir nessa tabela de Joins? ou como é que tenho que fazer para poder persistir certinho?

Obrigado

3 Respostas

m0ska

Cara eu tenho um exemplo que eu uso aqui, ele já cria uma tabela associativa certinho. olha só

@ManyToMany
	private List<Recurso> recursos;
breno.oliveira

Legal,

Mas o que tem errado com o meu então?

obrigado

m0ska

Cara, se eu fosse vc exemplificaria com um sistema simples onde só houvesse este relacionamento. pra ver oque pode estar errado. Outra coisa, analisa as mensagens de log e v direitinho a estrutura do banco de dados.

Criado 15 de junho de 2009
Ultima resposta 17 de jun. de 2009
Respostas 3
Participantes 2