引起:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性客户发票

0 entity jpa spring-data

我是基于Spring的项目的新手,我需要在OneToMany中创建订单和发票之间的实体关系映射,并尝试下面的映射,但最终会出现映射错误,请指点我解决这个问题.

@Entity
@Table(name="Customers")
public class Customers implements Serializable {

      private static final long serialVersionUID = 1L;
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "CustomerId", nullable = false)
    private Long CustomerId;

    @OneToMany(cascade=CascadeType.ALL, mappedBy="Customers")
    private Set<Orders> Orders  = new HashSet<Orders>();
}
@Entity
@Table(name="Orders")
public class Orders implements Serializable {
      private static final long serialVersionUID = 1L;
@Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "orderId", nullable = false)
    private Long orderId;

    @JoinColumn(name="CustomerId")
    @ManyToOne
    private Customers customers;

    @OneToOne (optional=false,cascade=CascadeType.ALL, mappedBy="orders",targetEntity=Invoices.class)
    private Invoices invoices;
    }

@Entity
@Table(name="Invoices")
public class Invoices implements Serializable {
      private static final long serialVersionUID = 1L;

    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "invoiceId", nullable = false)
    private Long invoiceId;

    @OneToOne(optional=false,cascade=CascadeType.ALL,   mappedBy="invoices",targetEntity=Orders.class)
    private Orders orders;
}
Run Code Online (Sandbox Code Playgroud)

错误消息:由以下原因引起:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性:com.mycompany.myproject.persist.entity.Customers.Orders中的com.mycompany.myproject.persist.entity.Orders.Customers

Ala*_*Hay 6

可能是因为Orders有一个属性'customers'而不是'Customers'(由'mappedBy'属性指定).

你应该整理你的班级名称和字段,如下所示:

@Entity
@Table(name="Customers")
public class Customer implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "CustomerId", nullable = false)
    private Long customerId;

    @OneToMany(cascade=CascadeType.ALL, mappedBy="customer")
    private Set<Order> orders  = new HashSet<Order>();
}

@Entity
@Table(name="Orders")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "orderId", nullable = false)
    private Long orderId;

    @ManyToOne
    @JoinColumn(name="CustomerId")
    private Customer customer;

    @OneToOne(optional=false, cascade=CascadeType.ALL, mappedBy="order")
    private Invoice invoice;
}

@Entity
@Table(name="Invoices")
public class Invoice implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @GeneratedValue(generator = "generator")
    @Column(name = "invoiceId", nullable = false)
    private Long invoiceId;

    @OneToOne(optional=false,cascade=CascadeType.ALL)
    @JoinColumn(name = "InvoiceId")
    private Order order;
}
Run Code Online (Sandbox Code Playgroud)