Ich habe einige Tabellen:ManyToMany: MappingException: Typ konnte nicht ermitteln für: java.util.List
PROFIL: id_profil, ...
EXPERIENCE: id_experience, id_profil #. ..
COMPETENCE_LEVEL: id_competence_level, Niveau, ...
One PROFIL kann viel ERFAHRUNG und Los COMPETENCE_LEVEL haben.
One EXPERIENCE kann viel COMPETENCE_LEVEL haben.
Ein COMPETENCE_LEVEL betrifft Los ERFAHRUNG.
Also, für mich, zwischen EXPERIENCE und COMPETENCE_LEVEL, ist dies eine (n-p) ManyToMany
Beziehung.
Ich habe versucht:
PROFIL.java:
@Entity
@Table(name="profil")
public class Profil {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_profil")
private Long idProfil;
public Profil() {
super();
}
public Long getIdProfil() {
return idProfil;
}
public void setIdProfil(Long idProfil) {
this.idProfil = idProfil;
}
@Override
public String toString() {
//[...]
}
}
EXPERIENCE.java:
@Entity
@Table(name="experience")
public class Experience {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_experience")
private Long idExperience;
@ManyToOne
@JoinColumn(name="id_profil")
private Profil idProfil;
private List<CompetenceLevel> competenceLevels;
public Experience() {
super();
idProfil = new Profil();
}
public Long getIdExperience() {
return idExperience;
}
public void setIdExperience(Long idExperience) {
this.idExperience = idExperience;
}
public Profil getIdProfil() {
return idProfil;
}
public void setIdProfil(Profil idProfil) {
this.idProfil = idProfil;
}
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "experience_competence_level", joinColumns = @JoinColumn(name = "id_experience", referencedColumnName = "id_experience"), inverseJoinColumns = @JoinColumn(name = "id_competence_level", referencedColumnName = "id_competence_level"))
public List<CompetenceLevel> getCompetenceLevels() {
return competenceLevels;
}
public void setCompetenceLevels(List<CompetenceLevel> competenceLevels) {
this.competenceLevels = competenceLevels;
}
@Override
public String toString() {
// [...]
}
}
COMPETENCE_LEVEL.java:
So@Entity
@Table(name="competence_level")
public class CompetenceLevel {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_competence_level")
private Long idCompetenceLevel;
@OneToOne
@JoinColumn(name="id_level")
private Level level;
@OneToOne
@JoinColumn(name="id_profil")
private Profil profil;
private List<Experience> experiences;
public CompetenceLevel() {
super();
}
public Long getIdCompetenceLevel() {
return idCompetenceLevel;
}
public void setIdCompetenceLevel(Long idCompetenceLevel) {
this.idCompetenceLevel = idCompetenceLevel;
}
public Level getLevel() {
return level;
}
public void setLevel(Level level) {
this.level = level;
}
public Profil getProfil() {
return profil;
}
public void setProfil(Profil profil) {
this.profil = profil;
}
@ManyToMany(mappedBy = "competenceLevels")
public List<Experience> getExperiences() {
return experiences;
}
public void setExperiences(List<Experience> experiences) {
this.experiences = experiences;
}
@Override
public String toString() {
// [...]
}
}
, ich habe diesen Fehler:
org.hibernate.MappingException: Could not determine type for: java.util.List, at table: competence_level, for columns: [org.hibernate.mapping.Column(experiences)]
Ich verstehe nicht, warum. Ich folge diesem tuto: https://hellokoding.com/jpa-many-to-many-relationship-mapping-example-with-spring-boot-maven-and-mysql/
Haben Sie eine Idee? Vielen Dank.
Ok Dank nicht schreiben :) es funktioniert. Ich schreibe die Anmerkungen zu den Feldern :). Jetzt habe ich Probleme mit Stakoverflow-Ausnahme. Wenn ich die Liste der Erfahrungen in CompetenceLevel entferne, funktioniert es:/Aber ich brauche es, hast du eine Idee? thx – Paladice
@Paladice Vielen Dank für eine schnelle Annahme. Ich denke, es wird besser, wenn Sie eine andere Frage stellen. Und fügen Sie einfach Entitäten hinzu - die Beschreibung der Tabellen in der Kopfzeile der Frage ist schwer zu lesen. –
Ok danke :) Ich werde es tun. – Paladice