【问题标题】:Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property:引起:org.hibernate.AnnotationException: mappedBy 引用了一个未知的目标实体属性:
【发布时间】:2014-07-02 18:09:07
【问题描述】:
 @Entity
public class Purveyor implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int ref_purveyor;

    @Column(unique = true)
    private String purveyor_name;

    @Column(unique = true)
    private int purveyor_number;

    @Column(unique = true)
    private String adress;

    @Column(unique = true)
    private int fax;

    /**
     * 
     * @return This returns the purveyor's ID.
     */
    public int getRef_purveyor() {
        return ref_purveyor;
    }

    /**
     * 
     * @param ref_purveyor
     *            This refers to the ID of the new purveyor.
     */
    public void setRef_purveyor(int ref_purveyor) {
        this.ref_purveyor = ref_purveyor;
    }

    /**
     * 
     * @return This return the name of the purveyor.
     */
    public String getPurveyor_name() {
        return purveyor_name;
    }

    /**
     * 
     * @param purveyor_name
     *            This refers to the new purveyor's name.
     */
    public void setPurveyor_name(String purveyor_name) {
        this.purveyor_name = purveyor_name;
    }

    /**
     * 
     * @return This returns the purveyor's number.
     */
    public int getPurveyor_number() {
        return purveyor_number;
    }

    /**
     * 
     * @param purveyor_number
     *            This refers to the new purveyor's number.
     */
    public void setPurveyor_number(int purveyor_number) {
        this.purveyor_number = purveyor_number;
    }

    /**
     * 
     * @return This returns purveyor's adress.
     */
    public String getAdress() {
        return adress;
    }

    /**
     * 
     * @param adress
     *            This refers to the new purveyor's adress.
     */
    public void setAdress(String adress) {
        this.adress = adress;
    }

    /**
     * 
     * @return This returns the purveyor's fax.
     */
    public int getFax() {
        return fax;
    }

    /**
     * 
     * @param fax
     *            This refers to new purveyor's fax.
     */
    public void setFax(int fax) {
        this.fax = fax;
    }

    /*@OneToMany(mappedBy = "orders")
    private Collection<Order> orders = new ArrayList<Order>();*/

    @OneToMany(fetch=FetchType.LAZY,mappedBy = "deliveries")
    private List<Delivery> deliveries = new ArrayList<Delivery>();

    /**
     * 
     * @see Order This refers to purveyor's Orders.
     */
    /*public Collection<Order> getOrders() {
        return orders;
    }*/

    /**
     * 
     * @param orders
     *            This refers to the orders of the purveyor.
     */
    /*public void setOrders(Collection<Order> orders) {
        this.orders = orders;
    }*/

    /**
     * 
     * @see Delivery This refers to purveyor's deliveries
     */
    public List<Delivery> getDeliveries() {
        return deliveries;
    }

    /**
     * 
     * @param deliveries
     *            This refers to the deliveries of the purveyor.
     */
    public void setDeliveries(List<Delivery> deliveries) {
        this.deliveries = deliveries;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }
}

======================-------------------------------==============================



 @Entity
`   public class Delivery implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "delivery_ref")
    @GeneratedValue
    private int delivery_ref;

    @Column(unique = true)
    private Date delivery_date;

    @Column
    private int quantity;

    /**
     * @return This returns the reference of the delivery.
     */
    public int getDelivery_ref() {
        return delivery_ref;
    }

    /**
     * 
     * @param delivery_ref
     *            This refers to the new delivery.
     */
    public void setDelivery_ref(int delivery_ref) {
        this.delivery_ref = delivery_ref;
    }

    /**
     * @return This returns the delivery date.
     */
    public Date getDelivery_date() {
        return delivery_date;
    }

    /**
     * 
     * @param delivery_date
     *            This refers to the new date of delivery.
     */
    public void setDelivery_date(Date delivery_date) {
        this.delivery_date = delivery_date;
    }

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "ref_purveyor")
    private Purveyor purveyor;

    @OneToOne(mappedBy = "delivery", cascade = CascadeType.ALL)
    private BillDelivery billD;

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public BillDelivery getBillD() {
        return billD;
    }

    public void setBillD(BillDelivery billD) {
        this.billD = billD;
    }

    public Purveyor getPurveyor() {
        return purveyor;
    }

    public void setPurveyor(Purveyor purveyor) {
        this.purveyor = purveyor;
    }

}

原因:org.hibernate.AnnotationException: mappedBy 引用了一个未知的目标实体属性:x.Purveyor.deliveries 中的 x.Delivery.deliveries

我尝试了本网站中已经提到的解决方案,但它对我不起作用。

谁能帮我解决这个问题

【问题讨论】:

    标签: jpa-2.0


    【解决方案1】:

    信息很清楚。您对 JPA 说:此 OneToMany 是 ManyToOne 的反面,在 Delivery 实体中由字段 deliveries 定义。但是Delivery 中没有字段deliveries。 Delivery中对应的字段名为purveyor

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "ref_purveyor")
    private Purveyor purveyor;
                       ^-- this is the other side of the association
    

    所以你需要的是

    @OneToMany(fetch=FetchType.LAZY,mappedBy = "puveyor")
    

    【讨论】:

    • 谢谢@JB Nizet 非常有帮助!!
    【解决方案2】:

    您的映射应如下所示

    Purveyor {
    
     @OneToMany(fetch=FetchType.LAZY,mappedBy = "purveyor")
     private List<Delivery> deliveries = new ArrayList<Delivery>();
    
    }    
    
    Delivery {
    
        @ManyToOne(fetch=FetchType.LAZY)
        @JoinColumn(name = "ref_purveyor")
        private Purveyor purveyor;
    
    }
    

    【讨论】:

      【解决方案3】:

      您需要分配完全相同的值:

      -mappedBy 值 -实体值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-26
        • 2011-04-30
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多