У меня проблема с ассоциациями JPA и ManyToMany.У внешнего ключа есть неправильное количество столбцов
У меня есть два класса FOA_PARAM_EMPLOYE и FOA_PARAM_POSITION и таблица ассоциаций FOA_PARAM_EMPLOYE_POSITION.
Класс FoaParamEmploye:
@Entity
@Table(name = "FOA_PARAM_EMPLOYE")
@NamedQuery(name = "FoaParamEmploye.findAll", query = "SELECT f FROM FoaParamEmploye f")
public class FoaParamEmploye implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private FoaParamEmployePK id;
@Column(name = "ACTEUR_MAJ_OCCUR")
private String acteurMajOccur;
@Column(name = "ADRESSE_EMAIL")
private String adresseEmail;
// bi-directional many-to-many association to FoaParamPosition
@ManyToMany
@JoinTable(
name = "FOA_PARAM_EMPLOYE_POSITION",
joinColumns = { @JoinColumn(name = "ID_EMPLOYE"),
@JoinColumn(name = "COD_ENTREP") },
inverseJoinColumns = { @JoinColumn(name = "ID_POSITION")
})
private List<FoaParamPosition> foaParamPositions;
public FoaParamEmployePK getId() {
return this.id;
}
public void setId(FoaParamEmployePK id) {
this.id = id;
}
public String getActeurMajOccur() {
return this.acteurMajOccur;
}
public void setActeurMajOccur(String acteurMajOccur) {
this.acteurMajOccur = acteurMajOccur;
}
public String getAdresseEmail() {
return this.adresseEmail;
}
public void setAdresseEmail(String adresseEmail) {
this.adresseEmail = adresseEmail;
}
public List<FoaParamPosition> getFoaParamPositions() {
return foaParamPositions;
}
public void setFoaParamPositions(List<FoaParamPosition> pFoaParamPositions) {
this.foaParamPositions = pFoaParamPositions;
}
}
Класс FoaParamPosition:
@Entity
@Table(name="FOA_PARAM_POSITION")
@NamedQuery(name="FoaParamPosition.findAll", query="SELECT f FROM FoaParamPosition f")
public class FoaParamPosition implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private FoaParamPositionPK id;
@Column(name="ACTEUR_MAJ_OCCUR")
private String acteurMajOccur;
@Column(name="CD_PROFIL_AFFECTATION")
private String cdProfilAffectation;
// bi-directional many-to-many association to FoaParamEmploye
@ManyToMany
private List<FoaParamEmploye> foaParamEmployes;
public FoaParamPositionPK getId() {
return this.id;
}
public void setId(FoaParamPositionPK id) {
this.id = id;
}
public String getActeurMajOccur() {
return this.acteurMajOccur;
}
public void setActeurMajOccur(String acteurMajOccur) {
this.acteurMajOccur = acteurMajOccur;
}
public String getCdProfilAffectation() {
return this.cdProfilAffectation;
}
public void setCdProfilAffectation(String cdProfilAffectation) {
this.cdProfilAffectation = cdProfilAffectation;
}
public List<FoaParamEmploye> getFoaParamEmployes() {
return foaParamEmployes;
}
public void setFoaParamEmployes(List<FoaParamEmploye> pFoaParamEmployes) {
this.foaParamEmployes = pFoaParamEmployes;
}
}
Таблица FOA_PARAM_EMPLOYE_POSITION имеет эти столбцы:
COD_ENTREP
ID_EMPLOYE
ID_POSITION
XQCIF
ACTEUR_MAJ_OCCUR
DATE_HEURE_MAJ_OCCUR
я получил это исключение:
A Foreign key refering com.groupama.middlgan.entities.FoaParamPosition from
com.groupama.middlgan.entities.FoaParamEmploye has the wrong number of column.
should be 2
Если добавить COD_ENTREP на inverseJoinColumns
в моем FoaParamEmploye сущности, я получил это исключение:
Repeated column in mapping for collection:
com.groupama.middlgan.entities.FoaParamEmploye.foaParamPositions column: COD_ENTREP
Любой навязчивой?
Я нахожу решение, удаляя inverseJoinColumns в FoaParamEmploye и добавляя @JoinTable в FoaParamPosition (без inverseJoinColumns тоже). – user3469203