我刚刚在我的数据库中创建了多对多关系,我的程序停止运行。这是我得到的错误:
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;
这是我的第二个实体:
@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);
}
}
我真的不知道为什么它一直给我显示“收集第二遍”消息以及为什么它无法构建 PU。谁能帮我吗?