Java 原因:org.hibernate.AnnotationException: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

我需要建立一对夫妻关系,但出现了这个错误 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.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")
...