3

データベースに多対多の関係を作成したところ、プログラムの実行が停止しました。これは私が得るエラーです:

759 [JavaFX Application Thread] DEBUG org.hibernate.cfg.Configuration  - Processing fk mappings (*ToOne and JoinedSubclass)
767 [JavaFX Application Thread] DEBUG org.hibernate.cfg.Configuration  - Processing extends queue
767 [JavaFX Application Thread] DEBUG org.hibernate.cfg.Configuration  - Processing extends queue
767 [JavaFX Application Thread] DEBUG org.hibernate.cfg.Configuration  - Processing collection mappings
776 [JavaFX Application Thread] DEBUG org.hibernate.cfg.CollectionSecondPass  - Second pass for collection: gear7.partyrock.model.Atividade.convidados
777 [JavaFX Application Thread] ERROR gear7.partyrock.utils.JPAUtils  - Não conseguiu carregar a EntityManagerFactory: [PersistenceUnit: PartyRockPU] Unable to build EntityManagerFactory

これは私の最初のエンティティです:

@Entity
@Table(name = "convidados")
public class Convidado implements AbstractEntity, Serializable {
...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.convidado", cascade = CascadeType.ALL)
    private List<Atividade> atividades;

これは私の 2 番目のエンティティです。

@Entity
@Table(name = "atividades")
public class Atividade implements AbstractEntity, Serializable {
...
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.atividade", cascade = CascadeType.ALL)
    private List<Convidado> convidados;

これは私の関係テーブルです:

@Entity
@AssociationOverrides({
    @AssociationOverride(name ="pk.convidado", joinColumns = @JoinColumn(name ="convidado_id")),
    @AssociationOverride(name ="pk.atividade", joinColumns = @JoinColumn(name ="atividade_id"))
})
public class ConvidadoAtividade implements Serializable {
    private ConvidadoAtividadePk pk = new ConvidadoAtividadePk();
    private Date dataCheckIn;

    @EmbeddedId
    public ConvidadoAtividadePk getPk() {
        return pk;
    }

    private void setPk(ConvidadoAtividadePk pk) {
        this.pk = pk;
    }

    @Transient
    public Atividade getAtividade() {
        return getPk().getAtividade();
    }

    public void setAtividade(Atividade atv) {
        getPk().setAtividade(atv);
    }

    @Transient
    public Convidado getConvidado() {
        return getPk().getConvidado();
    }

    public void setConvidado(Convidado conv) {
        getPk().setConvidado(conv);
    }

    @Temporal(TemporalType.DATE)
    @Column(name = "dataCheckIn", nullable = false)
    public Date getDataCheckIn() {
        return this.dataCheckIn;
    }

    public void setDataCheckIn(Date dataCheckIn) {
        this.dataCheckIn = dataCheckIn;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;

        if (o == null || getClass() != o.getClass())
            return false;

        ConvidadoAtividade that = (ConvidadoAtividade) o;

        if (getPk() != null ? !getPk().equals(that.getPk()) : that.getPk() != null)
            return false;

        return true;
    }

    @Override
    public int hashCode() {
        return (getPk() != null ? getPk().hashCode() : 0);
    }
}

「コレクションの 2 番目のパス」というメッセージが表示され続ける理由と、PU を構築できない理由がまったくわかりません。誰でも私を助けることができますか?

4

1 に答える 1