2014-12-30 18 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

感謝阿蘭,它的讚賞。有用。並幫助了我很多。 –

相關問題