Mapeamento Hibernate - Trilogia <RESOLVIDO>

Boa-tarde pessoal,

Continuo com o problema no mapeamento do Hibernate usando Annotations, mas já tive algum progresso desde o último post.

Tenho 3 tabelas :

<Empresa>
id - Integer
nome - Varchar

<Pagamento>
id - Integer
descricao - Varchar

<EmpresaPagamento>
empresa - Integer
pagamento - Integer

Estou tendo problemas ao mapear a tabela <EmpresaPagamento>

Olhando no tutorial oficial, fiz desta forma :

@Entity
class Empresa &#123;
    private Long id;
    private String nome;
    private Set&lt;Pagamento&gt; pagamentos;

    /* Métodos e atributos irrelevantes omitidos */

    @ManyToMany&#40;cascade = CascadeType.PERSIST&#41;
    @JoinTable&#40; name = &quot;empresapagamento&quot;,
            uniqueConstraints = @UniqueConstraint&#40; columnNames = &#123;&quot;empresa&quot;, &quot;pagamento&quot; &#125; &#41;,
            joinColumns = @JoinColumn&#40;name = &quot;empresa_id&quot;, referencedColumnName = &quot;id&quot;&#41;,
            inverseJoinColumns = @JoinColumn&#40;name = &quot;pagamento_id&quot;, referencedColumnName = &quot;id&quot;&#41;
    &#41;
    public Set&lt;Pagamento&gt; getPagamentos&#40;&#41; &#123;
        return pagamentos;
    &#125;
    @Id @GeneratedValue
    public Long getId&#40;&#41; &#123;
        return id;
    &#125;
&#125;
@Entity
class Pagamento &#123;
    private Long id;
    private String descricao;
    private Set&lt;Empresa&gt; empresas;
	
    /* Métodos e atributos irrelevantes omitidos */

    @ManyToMany
    public Set&lt;Empresa&gt; getEmpresas&#40;&#41; &#123;
        return empresas;
    &#125;

    @Id @GeneratedValue
    public Long getId&#40;&#41; &#123;
        return id;
    &#125;
&#125;
@Entity
class EmpresaPagamento &#123;
    private EmpresaPagamentoPK id;
    
    @Id
    public EmpresaPagamentoPK getId&#40;&#41; &#123;
        return id;
    &#125;
    /* Métodos e atributos irrelevantes omitidos */
&#125;
@Embeddable
class EmpresaPagamentoPK &#123;
    private Empresa empresa;
    private Pagamento pagamento;
    /* Métodos e atributos irrelevantes omitidos */
&#125;

Estou tendo a seguinte Exception:

Exception in thread &quot;main&quot; java.lang.ExceptionInInitializerError
	at loja.dao.util.HibernateUtil.&lt;clinit&gt;&#40;HibernateUtil.java&#58;31&#41;
	at loja.util.Util.main&#40;Util.java&#58;96&#41;
Caused by&#58; org.hibernate.MappingException&#58; Unable to find column with logical name&#58; empresapagamento.empresa
	at org.hibernate.cfg.Mappings.getPhysicalColumnName&#40;Mappings.java&#58;493&#41;
	at org.hibernate.cfg.AnnotationConfiguration.buildUniqueKeyFromColumnNames&#40;AnnotationConfiguration.java&#58;331&#41;
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile&#40;AnnotationConfiguration.java&#58;258&#41;
	at org.hibernate.cfg.Configuration.buildSessionFactory&#40;Configuration.java&#58;1168&#41;
	at loja.dao.util.HibernateUtil.&lt;clinit&gt;&#40;HibernateUtil.java&#58;28&#41;
	... 1 more

Já utilizei da técnica de tentativa e erro para manipular os atributos mas não consegui encontrar a forma correta de fazer este mapeamento.

Se alguém puder me ajudar ficarei agradecido.

[ :grin: ]

Resolvido.

Alterei o nome dos campos da tabela de :

empresa
pagamento

para :

empresa_id
pagamento_id

Imagino que esse é um jeito “brasileiro” de resolver, mas o importante é q funcionou. Ficou em minhas pendências para no futuro pesquisar e tentar acertar.

[ :grin: ]