Problemas com relação ManyToMany [Resolvido]

Seguinte pessoal.
Tenho uma relação ManyToMany, mas estou com um problema, no momento de realizar a criação da tabela (utilizando hibernate), ele está criando quatro FOREIGN KEYs, quando deveria ciar apenas 2

Alguém sabe me dizer o que pode ser?

Codigos.

Tabela Finalidade.

@Entity
public class Finalidade implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long codigo_finalidade;
    
    @ManyToMany
    @JoinTable(name = "finalidademensagem", joinColumns = {
        @JoinColumn(name = "codigo_finalidade")},
    inverseJoinColumns = {
        @JoinColumn(name = "codigo_infnfe")})
    @Cascade({org.hibernate.annotations.CascadeType.ALL})
    private Collection<InfNfe> mensagens;
   
    Get e Set...

}

Tabela InfNfe

[code]
@Entity
public class InfNfe implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long codigo_infnfe;
@Lob
@Column(name = "titulo", nullable = false)
private String titulo;
@Lob
@Column(name = "mensagem", nullable = false)
private String mensagem;
@Column(name = "status", nullable = true)
private boolean status;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "loginestab")
private LoginEstab loginestab;

@ManyToMany
@JoinTable(name = "finalidademensagem", joinColumns = {
    @JoinColumn(name = "codigo_infnfe")},
inverseJoinColumns = {
    @JoinColumn(name = "codigo_finalidade")})
@Cascade({org.hibernate.annotations.CascadeType.ALL})
private Collection<Finalidade> finalidades;

Get e Set
}[/code]

Tabela FinalidadeMensagemPK

[code]
@Embeddable
public class FinalidadeMensagemPK implements Serializable {
private static final long serialVersionUID = 1L;

@ManyToOne
@JoinColumn(name="codigo_infnfe")
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
private InfNfe codigo_infnfe;

@ManyToOne
@JoinColumn(name="codigo_finalidade")
@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
private Finalidade finalidade;

}[/code]

use o mappedBy.

Aqui explica como fazer corretamente o relacionamento: JPA: Mini Livro - Primeiros passos e conceitos detalhados

[quote=Hebert Coelho]use o mappedBy.

Aqui explica como fazer corretamente o relacionamento: JPA: Mini Livro - Primeiros passos e conceitos detalhados[/quote]

Acontece a mesma coisa
Ficaria assim o:

Finalidade

    @ManyToMany
    @JoinTable(name = "finalidademensagem", joinColumns = @JoinColumn(name = "codigo_finalidade"), inverseJoinColumns = @JoinColumn(name = "codigo_infnfe"))
    private List<InfNfe> mensagens;

Mensagens

    @ManyToMany(mappedBy = "mensagens")
    private List<Finalidade> finalidades;

SQL de criação

CREATE TABLE finalidademensagem
(
  codigo_infnfe bigint NOT NULL,
  codigo_finalidade bigint NOT NULL,
  CONSTRAINT finalidademensagem_pkey PRIMARY KEY (codigo_infnfe , codigo_finalidade ),
  CONSTRAINT fk2332af5c4fcd146 FOREIGN KEY (codigo_infnfe)
      REFERENCES infnfe (codigo_infnfe) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fk2332af5cf862b1f0 FOREIGN KEY (codigo_finalidade)
      REFERENCES finalidade (codigo_finalidade) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fkb1948f1c4fcd146 FOREIGN KEY (codigo_infnfe)
      REFERENCES infnfe (codigo_infnfe) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT fkb1948f1cf862b1f0 FOREIGN KEY (codigo_finalidade)
      REFERENCES finalidade (codigo_finalidade) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

Observe no sql acima que ele cria 4 FOREIGN KEYs, quando o certe seria apenas 2. Ou seja, ele duplica as FOREIGNs

Obrigado

[quote=Hebert Coelho]use o mappedBy.

Aqui explica como fazer corretamente o relacionamento: JPA: Mini Livro - Primeiros passos e conceitos detalhados[/quote]

Consegui resolver o problema com a relação ManyToMany com campos adicionais do Mini Livro, não é bem o que eu precisava mas ta funcionando, e é o que importa.
:smiley:

Obrigado, alias… Muito boa as suas explicações!

[quote=gilvanandre][quote=Hebert Coelho]use o mappedBy.

Aqui explica como fazer corretamente o relacionamento: JPA: Mini Livro - Primeiros passos e conceitos detalhados[/quote]

Consegui resolver o problema com a relação ManyToMany com campos adicionais do Mini Livro, não é bem o que eu precisava mas ta funcionando, e é o que importa.
:smiley:

Obrigado, alias… Muito boa as suas explicações!

[/quote]Uia, que bom! Parabéns. [=

Valeu pelo apoio.