簡體   English   中英

java / hibernate-如何使用注釋映射三個表/實體(休眠錯誤未映射到單個屬性)

[英]java/hibernate - how to map three tables/entities with annotation (hibernate error not mapped to a single property)

請幫忙!!。 三張桌子

customer, order,order_details

一個客戶可以有很多訂單,而一個訂單可以有一個客戶。 一個訂單可以具有多個訂單詳細信息,而一個訂單詳細信息可以具有一個訂單。

跟隨我的課。

OrderDetail.java

@Entity
public class OrderDetail {

    @EmbeddedId
    private OrderDetail_PK orderDetail_PK;

    private int qty;
    private double unitPrice;

    @ManyToOne
    @JoinColumn(name="orderId", referencedColumnName = "id", insertable = false, updatable = false)
    private Order order;

    @ManyToOne
    @JoinColumn(name="itemCode", referencedColumnName = "code", insertable = false, updatable = false)
    private Item item;
    ...
    ..

OrderDetail_PK.java

 @Embeddable
public class OrderDetail_PK implements Serializable{

    private String orderId;
    private String itemCode;
..
..

Order.java

    @Entity
@Table(name="`Order`")
public class Order { 

    @EmbeddedId
    private Order_PK order_PK;

    @Id
    private String id;
    @Temporal(TemporalType.DATE)
    private Date date;

    @ManyToOne
    @JoinColumn(name="customerId", referencedColumnName = "customerId", insertable = false, updatable = false)
    private Customer customer;

    @OneToMany(mappedBy = "order", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<OrderDetail> orderDetails = new ArrayList<>();
..
..

Order_PK.java

@Embeddable
public class Order_PK implements Serializable{

    private String Id;
    private String customerId;
..
..

cusotomer.java

@Entity
public class Customer {

    @Id
    @Column(name = "customerId")
    private String id;
    private String name;
    private String address;

    @OneToMany(mappedBy = "customer", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<Order> orders = new ArrayList<>();

    @OneToMany(mappedBy = "customer", cascade = {CascadeType.PERSIST, CascadeType.REMOVE})
    private List<Payment> payments = new ArrayList<>();
..
..

我的代碼有什么問題? 我需要快速幫助。

由於使用的是復合鍵,因此需要定義所有相關的聯接列:

@Entity
public class OrderDetail {

    @ManyToOne
    @JoinColumns({
            @JoinColumn(name="orderId", referencedColumnName = "id", insertable = false, updatable = false),
            @JoinColumn(name="customerId", referencedColumnName = "id", insertable = false, updatable = false),
    })
    private Order order;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM