2014-12-30 19 views
0

我是新的基于弹簧的项目, 我有要求与OneToMany创建订单和发票之间的实体关系映射,并尝试以下映射,但最后映射错误, 请你指出我解决这个问题。引起:org.hibernate.AnnotationException:mappedBy引用一个未知的目标实体属性客户发票

@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; 
} 

错误消息: 产生的原因:org.hibernate.AnnotationException:在com.mycompany.myproject.persist com.mycompany.myproject.persist.entity.Orders.Customers:的mappedBy引用一个未知目标实体属性。 entity.Customers.Orders

回答

6

可能是因为订单有一个属性'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; 
} 
+0

感谢阿兰,它的赞赏。有用。并帮助了我很多。 –

相关问题