我有一些表:多对多:MappingException:无法确定类型:java.util.List的
PROFIL:id_profil,...
经验:id_experience,id_profil#,。 ..
COMPETENCE_LEVEL:id_competence_level,水平,...
一个PROFIL可以有很多EXPERIENCE和很多COMPETENCE_LEVEL。
一个经验可以有很多COMPETENCE_LEVEL。
一个COMPETENCE_LEVEL担心很多经验。
因此,对于我来说,在EXPERIENCE和COMPETENCE_LEVEL之间,这是一个(n-p)ManyToMany
的关系。
我想:
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:
@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() {
// [...]
}
}
所以,我有这样的错误:
org.hibernate.MappingException: Could not determine type for: java.util.List, at table: competence_level, for columns: [org.hibernate.mapping.Column(experiences)]
我不明白为什么。我按照这个tuto:https://hellokoding.com/jpa-many-to-many-relationship-mapping-example-with-spring-boot-maven-and-mysql/
你有什么想法吗?谢谢。
好,谢谢。我在字段上写下注释:)。现在,我遇到了stakoverflow异常的问题。如果我删除了CompetenceLevel的经验列表,它可以工作:/但我需要它,你有一个想法吗? thx – Paladice
@Paladice感谢您的快速接受。我想,如果你问另外一个问题,情况会好一些。只需添加实体 - 问题标题中表格的描述很难阅读。 –
好的谢谢:)我会去做的。 – Paladice