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

Jpa 原因:org.hibernate.AnnotationException:mappedBy引用未知的目标实体属性客户发票,jpa,entity,spring-data,Jpa,Entity,Spring Data,我是spring项目的新手, 我需要使用OneToMany创建订单和发票之间的实体关系映射,并尝试了以下映射,但最终出现映射错误, 你能告诉我怎么解决这个问题吗 @Entity @Table(name="Customers") public class Customers implements Serializable { private static final long serialVersionUID = 1L; @Id @GenericGenerator(n

我是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;
}
@实体
@表(name=“客户”)
公共类客户实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“CustomerId”,null=false)
私人长客户ID;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“客户”)
private Set Orders=new HashSet();
}
@实体
@表(name=“Orders”)
公共类Orders实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“orderId”,nullable=false)
私有长orderId;
@JoinColumn(name=“CustomerId”)
@许多酮
私人客户;
@OneTONE(可选=false,cascade=CascadeType.ALL,mappedBy=“orders”,targetEntity=Invoices.class)
私人发票;
}
@实体
@表(name=“发票”)
公共类发票实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“invoiceId”,null=false)
私人长发票ID;
@OneToOne(可选=false,cascade=CascadeType.ALL,mappedBy=“invoices”,targetEntity=Orders.class)
私人订单;
}
错误消息:
原因:org.hibernate.AnnotationException:mappedBy引用com.mycompany.myproject.persist.entity.Orders.Customers中的未知目标实体属性:com.mycompany.myproject.persist.entity.Customers.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;
}
@实体
@表(name=“客户”)
公共类Customer实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“CustomerId”,null=false)
私人长客户ID;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“客户”)
private Set orders=new HashSet();
}
@实体
@表(name=“Orders”)
公共类顺序实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“orderId”,nullable=false)
私有长orderId;
@许多酮
@JoinColumn(name=“CustomerId”)
私人客户;
@OneTONE(可选=false,cascade=CascadeType.ALL,mappedBy=“order”)
私人发票;
}
@实体
@表(name=“发票”)
公共类Invoice实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“invoiceId”,null=false)
私人长发票ID;
@OneTONE(可选=错误,级联=级联类型.ALL)
@JoinColumn(name=“InvoiceId”)
私人秩序;
}

可能是因为订单有一个属性“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;
}
@实体
@表(name=“客户”)
公共类Customer实现了可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“CustomerId”,null=false)
私人长客户ID;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“客户”)
private Set orders=new HashSet();
}
@实体
@表(name=“Orders”)
公共类顺序实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“orderId”,nullable=false)
私有长orderId;
@许多酮
@JoinColumn(name=“CustomerId”)
私人客户;
@OneTONE(可选=false,cascade=CascadeType.ALL,mappedBy=“order”)
私人发票;
}
@实体
@表(name=“发票”)
公共类Invoice实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GenericGenerator(name=“generator”,strategy=“increment”)
@GeneratedValue(generator=“generator”)
@列(name=“invoiceId”,null=false)
私人长发票ID;
@OneTONE(可选=错误,级联=级联类型.ALL)
@JoinColumn(name=“InvoiceId”)
私人秩序;
}

谢谢艾伦,非常感谢。它起作用了。也帮了我很多。谢谢艾伦,非常感谢。它起作用了。而且帮了我很多。