@ManyToMany - como fazer?

3 respostas
abimaelrsergio

Boa tarde a todos,

Eu estou tentando fazer um relacionamento entre duas tabelas, vou dar um exemplo. Tem as tabelas usuario, grupo e a tabela de relacionamento FK usuario_grupo.

Então do lado do usuário tem o código:

@ManyToMany

@JoinTable(name = USUARIO_GRUPO,

joinColumns = {

@JoinColumn(name = CODUSUARIO),

@JoinColumn(name = CODEMPRESA) },

inverseJoinColumns = {

@JoinColumn(name = CODGRUPO),

@JoinColumn(name = CODEMPRESA) })

private Set grupos;

Quando rodo o programa o erro abaixo é mostrado:

org.hibernate.MappingException: Repeated column in mapping for collection: Repeated column in mapping for collection: com.teste.model.User.groups column: COD_FRANQUIA

Vocês tem idéia de como fazer esse relacionamento funcionar sem ter que alterar a base de dados. É que o banco de dados não pode ser alterado!

3 Respostas

tiago.vt

abimaelrsergio:
Boa tarde a todos,

Eu estou tentando fazer um relacionamento entre duas tabelas, vou dar um exemplo. Tem as tabelas usuario, grupo e a tabela de relacionamento FK usuario_grupo.

Então do lado do usuário tem o código:

@ManyToMany

@JoinTable(name = USUARIO_GRUPO,

joinColumns = {

@JoinColumn(name = CODUSUARIO),

@JoinColumn(name = CODEMPRESA) },

inverseJoinColumns = {

@JoinColumn(name = CODGRUPO),

@JoinColumn(name = CODEMPRESA) })

private Set grupos;

Quando rodo o programa o erro abaixo é mostrado:

org.hibernate.MappingException: Repeated column in mapping for collection: Repeated column in mapping for collection: com.teste.model.User.groups column: COD_FRANQUIA

Vocês tem idéia de como fazer esse relacionamento funcionar sem ter que alterar a base de dados. É que o banco de dados não pode ser alterado!

a principio ta errado aki @JoinColumn(name = “CODEMPRESA”) @JoinColumn(name = “CODEMPRESA”)
naum é join referencedColumnName = “”

abimaelrsergio

Olá Tiago,

Muito obrigado por responder-me!
   Pelo que entendi, não devo usar name, devo usar referncedColumnName, é isso? vou testar.

Grato,
Abimael R. Sergio

tiago.vt

abimaelrsergio:
Olá Tiago,

Muito obrigado por responder-me!
   Pelo que entendi, não devo usar name, devo usar referncedColumnName, é isso? vou testar.

Grato,
Abimael R. Sergio

nao siga o exemplo

@ManyToMany
	@ForeignKey(name="fk_orientador")
	@JoinTable(name="agenBancaOrientador",
			joinColumns = @JoinColumn(name="idOrientador", referencedColumnName="id"),
			inverseJoinColumns = @JoinColumn(name="idAgenBanca", referencedColumnName="idBanca"))
	private List<AgenBanca> colAgenBanca;

@ManyToMany
	@ForeignKey(name="agenBanca_fk")
	@JoinTable(name="agenBancaOrientador",
			joinColumns = @JoinColumn(name="idAgenBanca", referencedColumnName="idBanca"),
			inverseJoinColumns = @JoinColumn(name="idOrientador", referencedColumnName="id"))
	private List<Orientador> colOrientador;
Criado 29 de setembro de 2010
Ultima resposta 30 de set. de 2010
Respostas 3
Participantes 2