Je suis en train d’essayer d’avoir une connexion multiple entre deux classes, mais j’obtiens cette erreur. org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany
.
voici mon code,
Job.java
@OneToMany
@JoinColumn(name = "id", referencedColumnName = "id", insertable = false, updatable = false)
private Set<JobCostSplit> jobCostSplit;
JobCostSplit.java
@Column(name = "job_id")
private Long jobId;
@JsonIgnore
@OneToMany
@JoinColumn(name = "job_id", referencedColumnName = "id", insertable = false, updatable = false)
private Job job;
Réponses:
2 pour la réponse № 1Vous annotez votre Job
avec @OneToMany
. Signifie que vous aurez un attribut sur Job
et plus sur JobCostSplit
.
Donc si tu veux en avoir un Job
et plus JobCostSplit
vous devez le définir comme ceci:
@ManyToOne
@JoinColumn(name = "job_id", referencedColumnName = "id", insertable = false, updatable = false)
private Job job;
2 pour la réponse № 2
Vous devez annoter le champ dans JobCostSplit en tant que @ManyToOne
@ManyToOne
private Job job
1 pour la réponse № 3
vous devez d'abord écrire
@OneToMany(fetch = FetchType.LAZY, mappedBy = "job")
private Set<JobCostSplit> jobCostSplit= new HashSet<JobCostSplit>();
dans Job.java, puis ajoutez
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="jobId",nullable=false)
private Job job;
dans JobCostSplit.java
0 pour la réponse № 4
Dans job.java, remplacez @OneToMany par @ManyToOne