簡體   English   中英

如何在Hibernate中將OneToMany關系與弱實體映射

[英]how to mapping an OneToMany relation with Weak Entity in Hibernate

我需要在休眠狀態下使用JPA注釋映射一個OneToMany關系,其中涉及一個弱實體。
例如
表訂單:

CREATE TABLE orders(
idorder serial NOT NULL,
note varchar(30),
CONSTRAINT orders_pkey PRIMARY KEY (idorder)
)

表OrderItems:

CREATE TABLE orderitems(
  idorder integer NOT NULL,
  iditem serial NOT NULL,
  qnt integer,
  CONSTRAINT orderitems_pk PRIMARY KEY (idorder, iditem),
  CONSTRAINT fk_orderitems FOREIGN KEY (idorder)
      REFERENCES orders (idorder) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)

在我的“訂單”類中,我已經通過以下方式實現了getOrderItem()方法:

// i need cascadeType.All here
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "order")
public Set<OrderItem> getOrderItems() {
    return items;
}

現在,在插入之前無法知道將分配給新訂單的標識符,例如我可以在OrderItem類中使用注解以便自動(以層疊模式)提交正確的idOrder?
我的目標是要得到這樣的情況。

Order myOrder = new Order();
//      myOrder.setId(1) not necessary
myOrder.setNote("orderNote");

OrderItem firstItem = new OrderItem();  
// firstItem.setIdOrder()       no need to specify idorder
// firstItem.setId(12);
firstItem.setName("firstItem");
firstItem.setQnt(2);

OrderItem secondItem = new OrderItem();
// secondItem.setId(13);
secondItem.setName("secondItem");
secondItem.setQnt(4);

Set<OrderItem> items = new HashSet<OrderItem>();
items.add(firstItem);
items.add(secondItem);

myOrder.setItems(items);

OrderDAO dao = new OrderDAO();
dao.save(myOrder);  // i want inser all items in cascade with the idOder assigned to "myOrder"

好的,我將嘗試添加以上給定場景所需的實體類。

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

    @Id
    @GeneratedValue
    @Column(name="ID")
    private Long id;

    @Column(name="note ")
    private String note ;

    @OneToMany(mappedBy="orders")
    private Set<OrderItem> orderitems;

    // Getter and Setter methods
}

然后是OrderItem類

@Entity
@Table(name="OrderItems")
public class OrderItem{

    @Id
    @Column(name="iditem")
    private Long iditem;

    @Column(name="qnt")
    private long qnt ;

    @ManyToOne
    @JoinColumn(name="idorder")
    private Order order;

    public OrderItem() {

    }

    // Getter and Setter methods
}

此外,我不力讓這列您的setName映射到..和iditem心不是生成的值分配給它的ID類型好吧那么它也可能是有關問題,即誰可能是關系owener ..逆=真正的是屬性的mappedBy使用這樣相同的行為嘗試更改它。.讓我知道這是否可行,或者在嘗試時遇到問題。

暫無
暫無

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

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