Java 原因:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性
我需要建立一对夫妻关系,但出现了这个错误 mappedBy引用未知的目标实体属性 这是由以下原因引起的父级Java 原因:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性,java,hibernate,jpa,Java,Hibernate,Jpa,我需要建立一对夫妻关系,但出现了这个错误 mappedBy引用未知的目标实体属性 这是由以下原因引起的父级:org.hibernate.AnnotationException:mappedBy reference未知目标实体属性 package com.dating.model; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.persistence.Casc
:org.hibernate.AnnotationException:mappedBy reference未知目标实体属性
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;
}
}
您需要将
@OneToMany
注释的mappedBy
属性设置为psyQuestions,而不是question。mappedBy
属性的值是关系另一侧的类字段的名称,在这种情况下,类心理选项的manytone
一侧的psyQuestions
public class PsyQuestions {
....
@OneToMany(fetch = FetchType.LAZY,mappedBy="psyQuestions")
private List<PsyOptions> productlist=new ArrayList<PsyOptions>();
....
公共类心理问题{
....
@OneToMany(fetch=FetchType.LAZY,mappedBy=“psyQuestions”)
private List productlist=new ArrayList();
....
我也有同样的问题,因为源实体中的mappedBy被定义为“enrollment”(用@OneToMany注释),但目标实体中的相应属性是“bankEnrollment”;这是用@ManyToOne注释的属性
在源实体中从enrollment更新到BankEnrollment后,异常消失(如预期的那样)
经验教训:mappedBy值(如心理健康问题)应该作为属性名存在于目标实体中。不确定这是否对任何人都有帮助,这是一个简单的错误,在我的配置中导致了此错误。没有意识到我有两个不同的包包含域类文件。当应用程序只扫描单个包路径时,映射成员在另一个包中。 很难理解,因为它们只有一个字符不同,例如org.abc.core.domains和org.abcs.core.domains
在database@configuration scanners中添加了其他包,为我解决了这个问题。我刚刚更正了映射,它解决了这个问题
...
@OneToMany(fetch = FetchType.LAZY,mappedBy="question")
...
已为映射到问题的psyQuestions实体设置mappedBy属性table@AliAliAbdelFatah您发布的代码显示了OneToMany(fetch=FetchType.LAZY,mappedBy=“question”)。这必须如回答中所述进行更改。非常感谢,已解决我的错误,将表名放入mappedByattribute@AliAliAbdelFatah请不要忘记接受答案,为了帮助其他访问者,谢谢我用这个注释
@ComponentScan({“com.dating.model”})
...
@OneToMany(fetch = FetchType.LAZY,mappedBy="question")
...