我需要建立一个单向关系,但此错误似乎已映射通过引用未知的目标实体属性(该属性为父级) Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property
package com.dating.model; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="question") public class PsyQuestions { @Id @GenericGenerator(name="autoGen" ,strategy="increment") @GeneratedValue(generator="autoGen") @Column(name="questionid") private long psyQuestionId; @Column(name="questiontext") private String question; @OneToMany(fetch = FetchType.LAZY,mappedBy="question") private List<PsyOptions> productlist=new ArrayList<PsyOptions>(); public PsyQuestions() { super(); } public List<PsyOptions> getProductlist() { return productlist; } public void setProductlist(List<PsyOptions> productlist) { this.productlist = productlist; } public long getPsyQuestionId() { return psyQuestionId; } public void setPsyQuestionId(long psyQuestionId) { this.psyQuestionId = psyQuestionId; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } }
这个孩子班
package com.dating.model; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="option") public class PsyOptions { @Id @GenericGenerator(name="autoGen" ,strategy="increment") @GeneratedValue(generator="autoGen") @Column(name="optionid") private long psyOptionId; @Column(name="optiontext") private String optionText; @JoinColumn(name = "questionid") @ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY) PsyQuestions psyQuestions; public PsyOptions() { super(); } public PsyQuestions getPsyQuestions() { return psyQuestions; } public void setPsyQuestions(PsyQuestions psyQuestions) { this.psyQuestions = psyQuestions; } public long getPsyOptionId() { return psyOptionId; } public void setPsyOptionId(long psyOptionId) { this.psyOptionId = psyOptionId; } public String getOptionText() { return optionText; } public void setOptionText(String optionText) { this.optionText = optionText; } }
您需要mappedBy将@OneToMany注释的属性设置为 psyQuestions 而不是 问题 。的值mappedBy的属性是在关系的另一侧上的类字段的名称,在这种情况下 psyQuestions 所述的ManyToOne类PsyOptions的一侧。
mappedBy
@OneToMany
ManyToOne
public class PsyQuestions { .... @OneToMany(fetch = FetchType.LAZY,mappedBy="psyQuestions") private List<PsyOptions> productlist=new ArrayList<PsyOptions>(); ....